我有10个选择列表,每个选项超过10个,并且由于角度设置为10的最大摘要循环次数而出现此错误,
在这些选择列表上我应用这两个自定义过滤器并导致错误:
达到10 $ digest()次迭代。中止
app.filter('sortFilter', function() {
return function(items) {
items.sort(function (item1, item2) {
return (item1.order > item2.order ? 1 : -1);
});
return items;
};
});
app.filter('removeDuplicationFilter', function() {
return function(items, thisOption) {
var options=[];
angular.forEach(items, function(item) {
if ( item.order == 0 ) {
options.push(item);
} else if (thisOption == item.name) {
options.push(item);
}
});
return options;
};
});
<div ng-repeat="field in fields|sortFilter" ng-if="filterField.order">
<select ng-model="field.name" ng-options="item.name as item.label for item in fields | removeDuplicationFilter:field.name"></select>
</div>
请咨询,谢谢
更新: JS FIDDLE
答案 0 :(得分:1)
问题是你的sortFilter
修改了它应该过滤的值,即它会改变模型。这又会触发另一个摘要周期,并再次进行排序。您可以通过返回数组的排序副本来轻松修复它:
myApp.filter('sortFilter', function() {
return function(items) {
var result = items.concat([]); // copies the array
result.sort(function (item1, item2) {
return (item1.order > item2.order ? 1 : -1);
});
return result;
}
});