我对AngularJS过滤器有疑问。
我想过去"过滤"使用一个输入搜索框,但要使用" OR"使用多个字段过滤列表。条件。
这是一个演示。
http://jsbin.com/wodewexetu/2/edit
我不想仅使用name
和description
字段过滤列表。
如果我输入:" hello"," world",或" angular"它不应该返回任何结果。
如果我输入:"示例",它应该只返回第1行和第3行。
如果我输入:" description"它应该只返回第1行和第2行。等等。
所以一般来说,我想用一个名字,多个,但列表中的某些字段过滤" OR"条件。
我能够制作" AND"条件,但它不是我需要的。
我也搜索了很多关于这个主题的内容,但遗憾的是,这些代码和示例都没有为我工作。
请提前帮助和感谢。
答案 0 :(得分:1)
我认为还不支持OR过滤器。我通过创建一个名为$searchable
的元属性来解决它。
angular.forEach($scope.items, function (item){
Item.$searchable = [item.name, item.description].join (' ');
}
在html中:
<input type="text" ng-model="search.$searchable">
答案 1 :(得分:1)
您可以创建自己的custom filter,并应用您想要的任何功能。
在您的情况下,例如:
app.filter('customFilter', function() {
return function(items, search) {
if (!search) {
return items;
}
var searchItems = new RegExp(search.split(' ').join("|"), "i");
return items.filter(function(item) {
return searchItems.test(item.name) || searchItems.test(item.description);
});
};
});
看到它正常工作here。