【发布时间】:2020-08-08 13:15:46
【问题描述】:
是否可以通过点击事件在“v-for”中添加/更改计算属性? 当我点击正确的按钮时,我希望能够根据它们的类别显示食物列表。
如果我点击“水果”按钮,它将是
<div v-for="food in fruitCategory" :key="food.name" class="card">
<p>{{ food.name }}</p>
</div>
还有“糖果”按钮
<div v-for="food in candyCategory" :key="food.name" class="card">
<p>{{ food.name }}</p>
</div>
这是一个好方法吗?
下面的实际代码
<template>
<div class="layout">
<button>all</button>
<button>fruit</button>
<button>candy</button>
<div v-for="food in foods" :key="food.name" class="card">
<p>{{ food.name }}</p>
</div>
</div>
</template>
export default {
name: 'Food',
data() {
return {
foods: [
{ name: 'banana', category: 'fruit' },
{ name: 'orange', category: 'fruit' },
{ name: 'strawberry', category: 'fruit' },
{ name: 'gum', category: 'candy' },
{ name: 'fuzzy peach', category: 'candy' },
]
}
},
computed: {
fruitCategory: function() {
return this.foods.filter(function(food) {
return food.category === 'fruit'
})
}
},
candyCategory: function() {
return this.foods.filter(function(food) {
return food.category === 'candy'
})
}
}
【问题讨论】:
-
我倾向于只使用一个带有
return food.category === this.category的计算属性,其中this.category将是通过单击按钮设置的data属性。这样的东西符合您的要求吗?
标签: arrays vue.js v-for computed-properties