【问题标题】:AngularJS filter in certain fields with "OR" conditionAngularJS 过滤某些具有“或”条件的字段
【发布时间】:2015-05-04 09:59:37
【问题描述】:

我对 AngularJS 过滤器有疑问。

我不想用一个输入搜索框“过滤”,而是用“OR”条件的多个字段过滤列表。

这里是一个演示。

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

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

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

如果我输入:“example”,它应该只返回第 1 行和第 3 行。

如果我输入:“description”,它应该只返回第一行和第二行。等等。

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

我能够做出“AND”条件,但这不是我需要的。

我也搜索了很多关于这个主题的内容,但不幸的是,这些代码和示例都不适合我。

请提前帮助和感谢。

【问题讨论】:

    标签: javascript angularjs filter


    【解决方案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

    【讨论】:

    • 我希望创建一个自定义过滤器,但无法管理它。谢谢,正是我需要的。
    【解决方案2】:

    我认为 OR 过滤器尚不受支持。我通过创建一个名为 $searchable 的元属性解决了这个问题。

     angular.forEach($scope.items, function (item){
         Item.$searchable = [item.name, item.description].join (' ');
    }
    

    在html中:

    <input type="text" ng-model="search.$searchable">
    

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 1970-01-01
      • 2016-01-21
      • 2020-06-16
      • 2015-10-16
      • 1970-01-01
      • 2012-11-28
      • 1970-01-01
      • 2014-01-16
      相关资源
      最近更新 更多