我正在尝试实施多个基于复选框的过滤器,并想知道是否有更好的方法(这不会让John Papa感到不安)。
如果我正在与Sodas合作,并且我希望按品牌过滤作为起点我设置了这个:
<input type="checkbox" ng-model="vm.brands.Pepsi"> Pepsi
<input type="checkbox" ng-model="vm.brands.Coke"> Coke
<ul>
<li ng-repeat="soda in vm.sodas | filter:vm.brandFilter">
{{soda.name}}
</li>
</ul>
我的过滤功能是:
function brandFilter(soda) {
if (!vm.brands) {
return soda;
}
var brand = soda.brand;
if (vm.brands[brand] === true) {
return soda;
} else {
return false;
}
}
虽然这有效但我希望有一个更好/更生产可行的解决方案,可以保持干燥,考虑到我将添加多个&#39;&#39;复选框(如果它是苏打水,也许更多的对象属性将是颜色,味道等)。