在angular.js中的ng-repeat中使用条件标记后,我尝试编写了一个自定义过滤器来进行分组。但是我遇到了有关对象标识和正在观察更改的模型的问题,但是我认为我终于解决了它,因为控制台中不再出现错误信息。
结果发现我错了,因为当我尝试将其与其他过滤器(用于分页)结合使用时,就像这样
<div ng-repeat="r in blueprints | orderBy:sortPty | startFrom:currentPage*pageSize | limitTo:pageSize | group:3">
<div ng-repeat="b in r">
我再次收到了令人害怕的“10 $digest() 迭代已达上限。中止!”错误信息。这是我的分组过滤器:
filter('group', function() {
return function(input, size) {
if (input.grouped === true) {
return input;
}
var result=[];
var temp = [];
for (var i = 0 ; i < input.length ; i++) {
temp.push(input[i]);
if (i % size === 2) {
result.push(temp);
temp = [];
}
}
if (temp.length > 0) {
result.push(temp);
}
angular.copy(result, input);
input.grouped = true;
return input;
};
}).
注意到输入使用了angular.copy
和.grouped
标记,但是没有效果 :( 我知道 e.g. "10 $digest() iterations reached. Aborting!"由于使用angularjs的过滤器而发生,但显然我没有搞清楚。
此外,我想分组逻辑可能有点简单。无论如何,任何帮助都将不胜感激,因为这让我非常疯狂。