如何限制`v-for`中元素的迭代

Nit*_*mar 36 vue.js vuejs2

我正在构建一个小应用程序,Vuejs 2.0我有大约15个迭代元素,我想限制v-for只有5个元素,并且可以有更多的按钮来显示整个列表.有可能吗?

Anh*_*yen 97

您可以尝试此代码

<div v-if="showLess">
  <div v-for="value in array.slice(0, 5)"></div>
</div> 
<div v-else> 
  <div v-for="value in array"></div>
</div> 
<button @click="showLess = false"></button>
Run Code Online (Sandbox Code Playgroud)

新数组中只有5个元素.

更新:微小的更改使该解决方案适用于阵列和对象

<div v-if="showLess">
  <div v-for="(value,index) in object" v-if="index <= 5"></div>
</div> 
<div v-else> 
  <div v-for="value in object"></div>
</div> 
<button @click="showLess = false"></button>
Run Code Online (Sandbox Code Playgroud)

  • 这是一个不好的做法,在同一个元素上包含v-if和v-for-尽量避免使用v-if条件添加包装器 (4认同)
  • 如前所述,这只适用于**数组**,对象会抛出错误。 (2认同)

小智 8

我来晚了吗 您可以使用计算的属性解决此问题:

<div v-for="value in computedObj">{{value}}</div>
<button @click="limit = null">Shore more</button>
Run Code Online (Sandbox Code Playgroud)

然后在您的数据中:

data(){
  return {
    object:[], // your original data
    limit: 5 // or any number you wish to limit to
  }
}
Run Code Online (Sandbox Code Playgroud)

最后是您的计算属性:

computed:{
  computedObj(){
    return this.limit ? this.object.slice(0,this.limit) : this.object
  }
}
Run Code Online (Sandbox Code Playgroud)

当您单击按钮时,将清除限制,并显示/返回整个数据


Dav*_*kor 7

你可以试试这个解决方案......

<div  class="body-table  div-table" v-for="(item,index) in items"  :key="item.id" v-if="items && items.length > 0 && index <= limitationList">....
Run Code Online (Sandbox Code Playgroud)

并设置数据限制

data() {
  return {
    limitationList:5
  };
},
Run Code Online (Sandbox Code Playgroud)

并在你的btn中设置一个功能

  <button  @click="updateLimitation(limitationList)">
    show {{limitationList == 5 ? 'more' : 'less'}}
  </button>
Run Code Online (Sandbox Code Playgroud)

这是你的方法

updateLimitation(limitationList){
  if (this.limitationList == this.items.length) {
    this.limitationList = 5
  }else{
    this.limitationList = this.items.length
  }
}
Run Code Online (Sandbox Code Playgroud)

我希望对你有用......

  • 这个解决方案并不好,因为vue的v-if会为每个没有通过限制检查的元素留下空白的注释.所以你最终会在你的DOM中有很多"<!---->". (2认同)