Javascript 添加分页后AngularJS中的自定义筛选器
对my ng repeat清单()执行分页后Javascript 添加分页后AngularJS中的自定义筛选器,javascript,filter,angularjs,pagination,angularjs-ng-repeat,Javascript,Filter,Angularjs,Pagination,Angularjs Ng Repeat,对my ng repeat清单()执行分页后 我需要此筛选器按多种语言搜索(选择两种或更多语言)。 如果我将过滤=(列表|过滤器:搜索)中的数据替换为列表中的数据,您将看到它正在工作。但是我需要过滤进行分页 jsFiddle:(基于)我建议,不要在ng repeat指令中使用表达式,而是将ng repeat设置为列表的constroller上返回您要查找的子集或值的方法。例如: // In your controller $scope.filteredList = func
我需要此筛选器按多种语言搜索(选择两种或更多语言)。
如果我将过滤=(列表|过滤器:搜索)中的数据替换为列表中的数据,您将看到它正在工作。但是我需要过滤进行分页
jsFiddle:(基于)我建议,不要在ng repeat指令中使用表达式,而是将ng repeat设置为列表的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()"
希望这有帮助 我想我误解了你原来的问题 我重写了你的自定义过滤器。它不完全是面向对象的,但稍加修改,它的可扩展性会更好。基本上你只需要一些比基本的角度过滤器更具包容性的东西
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"
嗯,好吧。。。你能用叉子叉我的小提琴吗?我试过你的代码,但不知道如何使用。看起来很有希望。下面是一个更新的fiddle,其中包含了有效的js引用(原始引用产生了一个错误)。
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;
}
};
});
ng-repeat="data in filtered = list | filter:search.name | customFilter:search.language | startFrom:(currentPage-1)*entryLimit | limitTo:entryLimit"