我刚刚开始使用Vue.js,下面是我正在做的:我正在呈现一个产品列表,每个产品都有一个name
,一个gender
和一个size
。我希望用户能够通过输入性别来过滤产品。
var vm = new Vue({
el: '#product_index',
data: {
gender: "",
products: [{name: "jean1", gender: "women", size: "S"}, {name: "jean2", gender: "men", size: "S"}]
},
methods:{
updateGender: function(event){
this.gender = $(event.target).val()
}
}
}
)
<div v-for="product in products" v-if="...">
<p>{{product.name}}<p>
</div>
<input v-on:change="updateGender">
我设法更新了性别,但是过滤部分有问题。当页面加载时,我不想进行任何过滤。在文档中,他们建议使用v-if
,但它似乎与此配置不兼容。
如果我使用v-if
,我可以:
v-if="product.gender == gender"
但同样的,这在页面加载时不起作用,因为性别是空的。我找不到解决这个问题的方法。
我应该如何处理这个问题?
5条答案
按热度按时间ix0qys7i1#
使用计算属性-类似于以下内容(以下示例按类型过滤项目)
模板:
演示:http://jsbin.com/dezokiwowu/edit?html,js,console,output
ax6ht2ek2#
你可以试试
v-if="!gender || product.gender == gender"
6yoyoihd3#
刚刚修改了**@诺拉**的答案。
您需要在模板中更改为:
在JS文件中为:
工作演示:https://jsbin.com/qocuraquki/edit?html,js,console,output
nuypyhwy4#
然后你可以遍历filteredItems,比如
ebdffaop5#
按照上面的描述迭代对象