Angularjs 是否按具有可选属性的多个属性筛选?
我想通过两个json属性过滤一系列产品,Angularjs 是否按具有可选属性的多个属性筛选?,angularjs,angularjs-filter,Angularjs,Angularjs Filter,我想通过两个json属性过滤一系列产品,isExtinguisher&brand,isExtinguisher属性很简单,只是一个复选框和一个的过滤器,如下所示: ng-options="product as product.name for product in vm.filtered_products | filter : { isExtinguisher : vm.isExtinguisher } : true" 我遇到的问题是品牌过滤,我有另一个品牌,它绑定到vm。当前品牌我想要的是,
isExtinguisher
&brand
,isExtinguisher
属性很简单,只是一个复选框和一个
的过滤器,如下所示:
ng-options="product as product.name for product in vm.filtered_products | filter : { isExtinguisher : vm.isExtinguisher } : true"
我遇到的问题是品牌
过滤,我有另一个
品牌,它绑定到vm。当前品牌
我想要的是,如果vm。当前品牌
有价值,那么产品将被过滤,如果没有,那么它将显示所有品牌的所有产品
执行以下操作仅在选择品牌时显示产品:
ng-options="product as product.name for product in vm.filtered_products | filter : { isExtinguisher : vm.isExtinguisher, brand : vm.current_brand } : true"
但是,如果没有选择任何品牌,则不会显示任何产品,我希望的是,如果没有选择任何品牌,则会显示所有产品。使用
filter : vm.getFilter() : true
并在控制器中以这种方式定义getFilter():
vm.getFilter = function() {
var result = {
isExtinguisher : vm.isExtinguisher
};
if (vm.current_brand) {
result.brand = vm.current_brand;
}
return result;
};
那么,创建一个自定义过滤器不是更好吗?你也可以这样做,是的。不过,我不明白为什么会更好。