Angularjs自定义过滤器在构建过滤器中完全像普通一样工作

时间:2017-09-22 16:11:57

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

我在jsfiddle中有一个代码。我在angularjs中使用普通的构建过滤器服务。但我需要一个自定义过滤器服务,其行为与普通过滤器完全相同。我必须使用自定义过滤器,因为在过滤后我必须做一些自定义操作。我的jsfiddle链接

https://jsfiddle.net/subhajitmaity/jzpmg1um/3/

请仔细阅读链接。

<div ng-app="app" ng-controller='AppCtrl'>
<input type="text" ng-model="search">
    <script type="text/ng-template" id="categoryTree">
        {{ category.title }}
        <ul ng-if="category.categories">
            <li ng-repeat="category in category.categories | filter:search" ng-include="'categoryTree'">           
            </li>
        </ul>
    </script>
    <ul>
        <li ng-repeat="category in categories | filter:search" ng-include="'categoryTree'"></li>
    </ul>    
</div>

1 个答案:

答案 0 :(得分:0)

您可以从此自定义过滤器开始:

Options:
    domain-name = example.com
    domain-name-servers = AmazonProvidedDNS

用法:

app.filter('myfilter', function() {
   return function( items, search) {
    var filtered = [];

    if(!search){
      return items;
    }

      angular.forEach(items, function(item){     
          if(item.title.toLowerCase().indexOf(search.toLowerCase()) !== -1){
             filtered.push(item);
          }
      })      

    return filtered;
  };
});

问题仍然存在:如果其中一个子项包含| myfilter:search

之一,则父过滤器应返回true