AngularJS在某些字段中过滤" OR"条件

时间:2015-05-04 09:59:37

标签: javascript angularjs filter

我对AngularJS过滤器有疑问。

我想过去"过滤"使用一个输入搜索框,但要使用" OR"使用多个字段过滤列表。条件。

这是一个演示。

http://jsbin.com/wodewexetu/2/edit

我不想仅使用namedescription字段过滤列表。

如果我输入:" hello"," world",或" angular"它不应该返回任何结果。

如果我输入:"示例",它应该只返回第1行和第3行。

如果我输入:" description"它应该只返回第1行和第2行。等等。

所以一般来说,我想用一个名字,多个,但列表中的某些字段过滤" OR"条件。

我能够制作" AND"条件,但它不是我需要的。

我也搜索了很多关于这个主题的内容,但遗憾的是,这些代码和示例都没有为我工作。

请提前帮助和感谢。

2 个答案:

答案 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