Как разорвать цикл v-for в vue.js?

2

У меня есть это v-for loop мое приложение vue.js:

  <div v-for="(word, index) in dictionary"> 
     // break if index > 20
     <p>{{word}}</p>
  </div>

Я хочу вырваться из цикла после рендеринга 20 слов. Как я могу это достичь? Я посмотрел документы, но ничего не видел.

Теги:
vue.js

4 ответа

4
Лучший ответ

вы можете манипулировать массивом до начала цикла

<div v-for="(word, index) in dictionary.slice(0,20)"> 
    <p>{{word}}</p>
</div>
  • 0
    это будет работать для массива, но не для объекта. Я бы сам использовал этот метод, если он прост, но если есть больше логики, чем эта, или если это объект, я бы использовал вычисляемый метод.
3

Вы должны создать вычисленное значение для вашего укороченного словаря (например, лучше подготовить данные для рендеринга):

computed: {
 shortDictionary () {
   return dictionary.slice(0, 20)
 }
}

...

<div v-for="(word, index) in shortDictionary"> 
   <p>{{word}}</p>
</div>
  • 0
    Хорошая точка зрения. Но ради любопытства мне все еще интересно, есть ли способ сделать это на уровне v-for ?
0

Для этого сценария это решение работает лучше всего для меня.

<div v-for="(word, index) in dictionary" v-if="index <= 20"> 
    <p>{{word}}</p>
</div>
0

Чтобы сделать это на уровне v-for, создайте объект данных с лимитом и сравните его с индексом для управления v-for с помощью v-if.

  <div v-for="(word, index) in dictionary" v-if="index<=limit"> 
         // break if index > 20
         <p>{{word}}</p>
</div>

    <script>
export default{
   data(){
     return{
         limit: 20 }
   }
}
</script>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню