【发布时间】:2018-03-19 05:34:34
【问题描述】:
我正在Vuejs 2.0 中构建一个小型应用程序我有大约15 个迭代元素我想将v-for 限制为仅5 个元素,并且可以有更多按钮来显示整个列表。有没有可能?
【问题讨论】:
-
向我们展示您的尝试...
我正在Vuejs 2.0 中构建一个小型应用程序我有大约15 个迭代元素我想将v-for 限制为仅5 个元素,并且可以有更多按钮来显示整个列表。有没有可能?
【问题讨论】:
你可以试试这个代码
<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>
新数组中只有 5 个元素。
更新: 使此解决方案同时适用于数组和对象的微小更改
<div v-if="showLess">
<div v-for="(value,index) in object">
<template v-if="index <= 5"></template>
</div>
</div>
<div v-else>
<div v-for="value in object"></div>
</div>
<button @click="showLess = false"></button>
【讨论】:
<div v-for="value in (showLess ? array : array.slice(0, 5))></div> <button @click="showLess = false"></button>
我来晚了吗? 您可以使用计算属性来解决这个问题:
<div v-for="value in computedObj">{{value}}</div>
<button @click="limit = null">Show more</button>
然后在数据中:
data(){
return {
object:[], // your original data
limit: 5 // or any number you wish to limit to
}
}
最后在你的计算属性中:
computed:{
computedObj(){
return this.limit ? this.object.slice(0,this.limit) : this.object
}
}
当您点击按钮时,限制被清除并显示/返回整个数据
【讨论】:
你可以试试这个解决方案...
<div class="body-table div-table" v-for="(item,index) in items" :key="item.id" v-if="items && items.length > 0 && index <= limitationList">....
并设置数据限制
data() {
return {
limitationList:5
};
},
并在你的 btn 中设置一个功能
<button @click="updateLimitation(limitationList)">
show {{limitationList == 5 ? 'more' : 'less'}}
</button>
这是你的方法
updateLimitation(limitationList){
if (this.limitationList == this.items.length) {
this.limitationList = 5
}else{
this.limitationList = this.items.length
}
}
希望对你有用……
【讨论】:
为了解决这个问题,你可以在计算方法中计算限制列表
喜欢这个
<div class="body-table div-table" v-for="(item,index) in filterItems" :key="item.id">
....
<script>
export default {
data() {
return {
items: [],
limitationList:5
};
},
computed: {
filterItems () {
return this.items && this.items.length > 0 && (this.items.length - 1) <= this.limitationList // or any condition u want
}
}
}
</script>
希望有用。
【讨论】: