2013-04-23 164 views
1

實現分頁到我的NG-重複上市(Update pagination in AngularJS after filtering自定義過濾器添加分頁

<li ng-repeat="data in filtered = (list | filter:search) ... > 

後後,我現在有一個問題,我的自定義過濾器

<li ng-repeat="data in filtered = (list | filter:search) | customFilter:search ... > 

我需要這個過濾器以多種語言進行搜索(選擇兩種或更多種語言)。 如果我將中的數據替換爲列表中的數據,您將看到它的工作原理。但我需要過濾爲我的分頁。

的jsfiddle:http://jsfiddle.net/StinsonMaster/SuEX6/4/(基於the fiddle from the previous thread

回答

0

我想我誤解了你原來的問題。

我重寫了您的自定義過濾器。它並不完全反對,但有一點觸動它可以更加可擴展。基本上你只需要比基礎角度濾波器更具包容性的東西。

app.filter("customFilter", function() { 
    return function(input, search) { 
     if(search && search != undefined) { 
      var _toRet = new Array(); 
      for(var i in search) { 
       for(var k in input) { 
        if(search.indexOf(input[k].language) != -1 && _toRet.indexOf(input[k]) == -1) { 
         _toRet.push(input[k]); 
        } 
       } 
      } 
      return _toRet; 
     } else { 
      return input; 
     } 
    }; 
}); 

另請注意對ngRepeat語法的更改。

ng-repeat="data in filtered = list | filter:search.name | customFilter:search.language | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit" 

http://jsfiddle.net/doublekid/5Bs3h/

+0

非常感謝! – StinsonMaster 2013-06-11 14:38:26

+0

看起來很有希望。這是一個有效的js引用(原始產生錯誤)的更新小提琴。 http://jsfiddle.net/YaQK2/ – mg1075 2014-06-26 04:25:16

0

我會建議,而不是在你的NG-重複指令使用表達式,設置NG重複相同的列表中的constroller方法返回的子集或你正在尋找的價值。例如:

// In your controller 

     $scope.filteredList = function() { 
      return $filter('filter')($scope.list,{'language':search.language}); 
     } 

// And in your ng-repeat 

     ng-repeat="(key,val) in filteredList()" 

希望這有助於!

+0

嗯,好吧...你可以派生我的小提琴?我試過你的代碼,但沒有弄清楚如何使用它。 – StinsonMaster 2013-05-07 11:53:47

相關問題