如何打破vue.js中的v-for循环?

nr9pn0ug  于 2023-01-31  发布在  Vue.js
关注(0)|答案(6)|浏览(244)

我的vue.js应用程序中有一个v-for循环:

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

我想在渲染完20个单词后跳出循环,怎么才能做到呢?我看了看docs,但没有看到任何关于这方面的内容。

s8vozzvw

s8vozzvw1#

你可以在循环开始前操作数组

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

yquaqz182#

您必须为截断字典创建一个计算值(例如,最好准备数据以进行呈现):

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

...

<div v-for="(word, index) in shortDictionary"> 
   <p>{{word}}</p>
</div>
luaexgnf

luaexgnf3#

对于此场景,此解决方案最适合我。

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

arknldoa4#

要在v-for级别执行此操作,请创建一个带有limit的数据对象,并将其与index进行比较,以使用v-if控制v-for。

<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>
cbeh67ev

cbeh67ev5#

由于v-for可以与range一起使用,因此这里提供了一个解决方案,该解决方案不涉及通过拼接或使用计算的:

<div v-for="i in Math.min(dictionary.length, 20)"> 
  <p>{{dictionary[i-1]}}</p>
</div>

https://v2.vuejs.org/v2/guide/list.html

5sxhfpxr

5sxhfpxr6#

可以使用Array.sliceMath.min函数:

<div v-for="(word, i) in dictionary.slice(0, Math.min(20, dictionary.length))"> 
   <p>{{word}}</p>
</div>

使用计算方法:

computed: {
 firtsElements () {
   return this.dictionary.slice(0, Math.min(20, this.dictionary.length))
 }
}

相关问题