2015-09-01 101 views
0

多個PARAMS自定義過濾器我有suchc過濾器:AngularJS:有鑑於

.filter('searchFilter', function() { 
    function contains(src, value, except) { 
     var key; 
     switch(typeof src) { 
     case 'string': 
     case 'number': 
     case 'boolean': 
      return String(src).toLowerCase().indexOf(value.toLowerCase()) > -1; 
     case 'object': 
      except = except || []; 
      for(key in src) { 
      if(src.hasOwnProperty(key) && 
       except.indexOf(key) < 0 && 
       contains(src[key], value, except) 
      ) { 
       return true; 
      } 
      } 
     default: 
      return false; 
     } 
     return false; 
    } 

    return function(data, filter, except) { 
     return filter ? data.filter(function(item) { 
      return contains(item, filter, except); 
     }) : data.slice(0); 
    }; 

,如果我在控制我的工作,我有:

$filter('searchFilter')($scope.users, $scope.search, ['Id','ImgUrl']); 

但現在我需要把它放在查看與ng-repeat,我嘗試這樣:

<li ng-repeat="node in users | searchFilter:users:search:['Id', 'ImgUrl']"></li> 

,但它的工作壞...

,如果我把線return filter ? data.filter(function(item) {我看到之前的調試器,我filter不是我的搜索詞,通過陣列的數據...

如何解決這個問題?

回答

1

使用

<li ng-repeat="node in users | searchFilter:search:['Id', 'ImgUrl']"></li> 

你不必通過用戶這樣searchFilter:users:search:['Id', 'ImgUrl']"users會自動作爲第一個參數傳遞。