Angularjs 是否按具有可选属性的多个属性筛选?

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。当前品牌我想要的是,

我想通过两个json属性过滤一系列产品,
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;
};

那么,创建一个自定义过滤器不是更好吗?你也可以这样做,是的。不过,我不明白为什么会更好。