3 回答
TA贡献1936条经验 获得超6个赞
这能解决您的问题吗?
possibleFilters() { return [...new Set(this.products.map(x => x.location))] },
TA贡献1786条经验 获得超11个赞
这是一个基于您的小提琴的快速而肮脏的解决方案。只是为了让您了解如何分离两个过滤器。尝试这里的解决方案https://jsfiddle.net/4839spkx/
possibleFilters() {
// we have some input, so show all location filters available in the filtered by input products
if (this.search) {
const filteredByInput = this.products.filter(p => p.name.includes(this.search.toLowerCase()))
return [...new Set(filteredByInput.map(p => p.location))]
}
return [...new Set(this.filteredSearch.map(x => x.location))]
},
TA贡献1818条经验 获得超3个赞
由于您使用计算属性从过滤的产品位置动态生成可能的过滤器,因此每次更新过滤的产品时都会更新。我建议您创建一个新数组并用您的数据填充该数组。
HTML:
...
<li v-for="filter in possibleFiltersArr" :key="filter">
<label>
<input type="checkbox" @change="toggleFilter(filter)" :checked="filters.includes(filter)">
<span>{{filter}}</span>
</label>
</li>
...
JS
...
data: {
posibleFiltersArr:[],
...
created(){
this.possibleFiltersArr=[...new Set(this.filteredSearch.map(x => x.location))]
},
...
您可以在方法中设置此数组created(),并且可以在搜索框中输入一些文本后更新此数组。
- 3 回答
- 0 关注
- 161 浏览
添加回答
举报