【问题标题】:Filter by multiple properties with optional properties?按具有可选属性的多个属性过滤?
【发布时间】:2015-12-26 21:47:20
【问题描述】:

我想通过两个 json 属性,isExtinguisherbrand 过滤一组产品,isExtinguisher 属性很简单,只需一个复选框和一个 <select> 的过滤器,如下所示:

ng-options="product as product.name for product in vm.filtered_products | filter : { isExtinguisher : vm.isExtinguisher } : true"

我遇到的问题是brand 过滤,我还有另一个<select> 用于品牌,它绑定到vm.current_brand 我想要的是如果vm.current_brand 有价值,那么产品@ 987654330@会被过滤掉,如果没有则显示所有品牌的所有产品。

执行以下操作仅在选择品牌时显示产品:

ng-options="product as product.name for product in vm.filtered_products | filter : { isExtinguisher : vm.isExtinguisher, brand : vm.current_brand } : true"

但是当没有选择品牌时,则没有产品显示,而我想要的是,如果没有选择品牌,那么将显示所有产品。

【问题讨论】:

    标签: angularjs angularjs-filter


    【解决方案1】:

    使用

    filter : vm.getFilter() : true
    

    并在控制器中以这种方式定义 getFilter():

    vm.getFilter = function() {
        var result = {
            isExtinguisher : vm.isExtinguisher
        };
        if (vm.current_brand) {
            result.brand = vm.current_brand;
        }
        return result;
    };
    

    【讨论】:

    • 那么创建自定义过滤器不是更好吗?
    • 你也可以这样做,是的。不过,我不明白为什么它会更好。
    猜你喜欢
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-17
    • 2018-09-18
    • 2014-09-15
    相关资源
    最近更新 更多