严格过滤属性数组

时间:2016-08-09 15:42:41

标签: angularjs angularjs-ng-repeat angularjs-filter

我刚注意到我的应用中存在一个错误。我对几个选项进行了过滤,并将过滤器设置为严格,但它并没有严格执行。

ng-repeat="(cat, prodGrp) in products | filter:search:strict | groupBy: 'productGroup'"

数据:

filterOptions: {
    "riskTolerance": ["Moderate", "Moderately Aggressive", "Aggressive"]
},
productList: [{
    "title": "Scott Awesome Product",
    "riskTolerance": ["Aggressive"],
    "description": "Leverages good stuff\r\n",
    "productGroup": "Group 1"
}, {
    "title": "Test Product",        
    "riskTolerance": ["Moderately Aggressive", "Moderate"],        
    "description": "Offers good stuff\r\n",
    "productGroup": "Group 1"
}

我使用filterOptions创建该数组中每个项目的选择框。 但是,如果我选择“积极的”,我会同时获得这两种产品。这很奇怪,因为我选择了严格的#39;

我查看了https://docs.angularjs.org/api/ng/filter/filter,但他们的示例并未使用所有可用的过滤器属性,而且我不确定是否还有其他可以引用的属性工作

非常感谢任何帮助。

更新

谢谢JB Nizet。我现在知道我应该使用:true,而不是:strict。但是因为我现在把":真的"无处不在,当我选择" All"下拉菜单的选项,因为它试图匹配""严格来说,这个价值。

所以,我已经实现了此处的自定义过滤器:https://stackoverflow.com/a/28745675/203141

$scope.filterByCategory = function (input, search_param) {
    return search_param === "" || angular.equals(input, search_param);
};

0 个答案:

没有答案