我对AngularJS过滤器有个问题。
我不想使用一个输入搜索框“筛选”,而是使用"OR“条件使用多个字段进行筛选。
这是一个演示。
http://jsbin.com/wodewexetu/2/edit
我不打算只使用name和description字段过滤列表。
如果我输入:“你好”、“世界”或“角度”,它不应该返回任何结果。
如果我输入:“示例”,它应该只返回第1行和第3行。
如果我输入:"description“,它应该只返回第1行和第2行。等等。
因此,通常,我希望使用一个名称,多个,但是列表中的某些字段使用"OR“条件进行筛选。
我能够创造“和”条件,但这不是我所需要的。
我也搜索了很多关于这个话题,但不幸的是,没有这些代码和例子对我有用。
请提前帮助和感谢。
发布于 2015-05-04 11:25:47
您可以创建自己的自定义过滤器,并应用您想要的任何功能。
在你的情况下,就像:
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);
});
};
}); 看到它在运行这里。
发布于 2015-05-04 10:39:13
我认为OR过滤器还不支持。我通过创建一个名为$searchable的元属性来解决这个问题。
angular.forEach($scope.items, function (item){
Item.$searchable = [item.name, item.description].join (' ');
}在html中:
<input type="text" ng-model="search.$searchable">https://stackoverflow.com/questions/30027324
复制相似问题