【发布时间】:2016-04-17 11:56:49
【问题描述】:
我给了一个对象如下
{
key1: [{...}, {...} ....],
key2: [{...}, {...} ....],
.........so on .....
}
我有一个 ng-repeat ng-repeat="(key, values) in data" 然后在里面 ng-repeat="val in values"
我想根据存储在数组中的对象的某些属性设置过滤器。我已经设置了下面的过滤器
.filter('objFilter', function () {
return function (input, search,field) {
if (!input || !search || !field)
return input;
var expected = ('' + search).toLowerCase();
var result = {};
angular.forEach(input, function (value, key) {
result[key] = [];
if(value && value.length !== undefined){
for(var i=0; i<value.length;i++){
var ip = value[i];
var actual = ('' + ip[field]).toLowerCase();
if (actual.indexOf(expected) !== -1) {
result[key].push(value[i]);
}
}
}
});
console.log(result);
return result;
};
当我使用ng-repeat="(date, values) in data| objFilter:search:'url'" 时,过滤器似乎工作正常,但由于某种原因,它被调用太多次并导致无限 $digest 循环。
有什么解决办法吗??
编辑: 我在下面创建了 plunker 来显示这个问题。过滤器有效,但在控制台中查找错误。 http://plnkr.co/edit/BXyi75kXT5gkK4E3F5PI
【问题讨论】:
-
请提供一些虚拟数据,以便我们调试。
-
我已经用 plunker 更新了问题以显示问题
标签: angularjs angularjs-filter