我有这样的过滤器:
.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
不是我的搜索字,而是数组数据......
如何解决这个问题?
答案 0 :(得分:1)
使用
<li ng-repeat="node in users | searchFilter:search:['Id', 'ImgUrl']"></li>
您不必以这种方式传递用户searchFilter:users:search:['Id', 'ImgUrl']"
。users
将自动作为第一个参数传递。