2013-04-23 118 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

相关问题