javascript - Vue.js / Lodash - 如果 slug 在 result.categories 数组中,则过滤结果
问题描述
我正在使用 WP API 在 WooCommerce 中构建产品过滤系统,并且几乎可以正常工作,但我遇到了最后一个障碍。
每个产品都在一个数组中通过其类别,每个类别都是一个数组/对象本身带来id
,name
和slug
。我目前正在尝试仅显示类别slug
与用户选择的数组中的内容相匹配的产品。并不是说用户可以选择很多。
这就是我的 Vue 数组 (ageFilter) 如何获得用户的选择
我试过做
return _.orderBy(
this.results.filter(result =>
this.ageFilter.every(
age => result.categories.every(category =>
age === category.slug
)
)
)
);
虽然它返回 true 或 false,但它不会更新过滤的产品。有人可以指出如何正确地做到这一点吗?
这是我的完整 Vue 代码。我只想获取用户所做的一系列选择,并遍历产品的类别并返回任何具有category.slug
至少等于用户选择之一的类别。
<script>
let products = <?php echo wp_remote_retrieve_body($products) ?>;
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}
new Vue({
el: "#allergenContainer",
data: {
allergenFilter: [],
ageFilter: [],
results: {},
},
created: function() {
let self = this;
self.results = products;
},
methods: {
filteredResults: function() {
if (this.allergenFilter && this.ageFilter == "") {
return _.orderBy(
this.results.filter(result =>
this.allergenFilter.every(
allergen => result.allergens.includes(allergen)
)
)
);
} else if(this.ageFilter && this.allergenFilter == ""){
return _.orderBy(
this.results.filter(result =>
this.ageFilter.every(
age => result.categories.every(category =>
age === category.slug
)
)
)
);
}
else {
return _.orderBy(
this.results
)
}
}
}
});
</script>
filteredResults
编辑:如果需要,这是正在使用的模板:
<div v-for="result in filteredResults()" class="text-center">
<div class="text-center">
<a :href="result.permalink">
<img :src="result.images[0].src" :alt="result.images[0].alt">
</a>
<h2>{{result.name }}</h2>
<h3 v-html="result.subtitle"></h3>
<div class="p_more_div">
<a :href="result.permalink">MORE INFO</a>
</div>
</div>
</div>
解决方案
推荐阅读
- sapui5 - sap.ui.table.Table - 按内容以编程方式选择行
- assembly - 具有两个递归函数的二元炸弹阶段 4
- java - 缺少退货声明,我缺少什么
- nexus3 - 如何为 Gauge 插件配置 Nexus3 存储库?
- powerapps - 如何将 google sheet excel 列值添加到电源应用程序的下拉列表中
- javascript - Javascript on Press Keydown“Q”按下键“1”和“2”
- ruby - 从 CSV 解析唯一值
- django - 获取 django 下拉菜单项查询集
- dart - Flutter 组合框和数字输入
- zsh - zsh:运行 zle 小部件后的刷新提示