[英]Custom filter in AngularJS after adding pagination
在实现对ng-repeat列表的分页之后(过滤后在AngularJS中更新分页 )
<li ng-repeat="data in filtered = (list | filter:search) ... >
我的自定义过滤器现在有问题
<li ng-repeat="data in filtered = (list | filter:search) | customFilter:search ... >
我需要此过滤器以多种语言搜索(选择两种或多种语言)。 如果我将filter =(list | filter:search)中的数据替换为list中的 数据 ,您将看到它正在工作。 但是我需要对分页进行过滤 。
jsFiddle: http : //jsfiddle.net/StinsonMaster/SuEX6/4/ (基于上一个线程的小提琴 )
我建议不要在ng-repeat指令中使用表达式,而应将ng-repeat设置为等于列表构造函数上的一种方法,该方法返回您要查找的子集或值。 例如:
// 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()"
希望这可以帮助!
我想我误解了您的原始问题。
我重写了您的自定义过滤器。 它不是完全面向对象的,但是稍加修饰它就可以扩展得多。 基本上,您只需要比基本角度过滤器更具包容性的东西。
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"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.