vue.js - Vue.js 多个过滤器
问题描述
我正在尝试过滤一些使用 Vue.js 呈现的内容,但只有第一个过滤器在工作,即尺寸过滤器。
var vm = new Vue({
el: "#full_area",
data: {
projects: <?php print json_encode($postsa);?>,
selectedSize: "All",
selectedPlatform: "All"
},
computed: {
filteredProjects: function () {
var vm = this;
var size = vm.selectedSize;
var platform = vm.selectedPlatform;
if (size === "All") {
return vm.projects;
} else if (size != "All") {
return vm.projects.filter(function (project) {
return project.size === size;
});
}
if (platform === "All") {
return vm.projects;
} else if (platform != "All") {
return vm.projects.filter(function (project) {
return project.platform === platform;
});
}
}
}
});
<div class="filter">
<select name="selectedSize" v-model="selectedSize">
<option value="All">Website Size</option>
<option>1 Page</option>
...
<option>10+ Page</option>
</select>
</div>
<div class="filter">
<select name="selectedPlatform" v-model="selectedPlatform">
<option value="All">CMS Platform</option>
<option>Wordpress</option>
.....
</select>
</div>
我已经尝试过使用 if`s 和 else 玩几件事,但没有运气。有什么想法吗?
谢谢。
解决方案
一种不那么冗长的方法:
computed: {
filteredProjects: function () {
const size = this.selectedSize,
platform = this.selectedPlatform;
return this.projects
.filter(p => size === 'All' || p.size === size)
.filter(p => platform === 'All' || p.platform === platform)
}
}
推荐阅读
- html - Bootstrap 列等高
- c++ - 使用 QFile::write 的正确方法?
- sql - Oracle SQL - ORA-00904: "IPA"."CHECK_ID": 无效标识符
- php - 在php中对数据进行排序。只有变量可以通过引用传递
- http - 是否可以将 HTTP POST req 的标头和正文转换为 JSON 并重复到上游
- python - 使用 python 在 MacOSX 上使用 ChromeDriver 时显示错误
- java - 创建帐户时出现条带连接错误
- php - 可变值错误,Laravel,Blade
- odoo - 发票行“price_by_pricelist”中的字段
- jhipster - JHipster Registry v3.3.0 上的微服务状态已关闭