错误:达到 10 次 $digest() 迭代。中止!在最后 5 次迭代中触发的观察者:过滤器中的 []
Posted
技术标签:
【中文标题】错误:达到 10 次 $digest() 迭代。中止!在最后 5 次迭代中触发的观察者:过滤器中的 []【英文标题】:Error:10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [] in filter 【发布时间】:2014-10-24 03:06:05 【问题描述】:在我的程序中,我正在显示图像列表。然后我用标签名称过滤它。 所以这是我的过滤器。
app.filter('myFilter', function()
var filtered = [];
return (function(items, text)
if (text === undefined)
return items;
else
angular.forEach(items, function(value, key)
var sample = value.tag;
angular.forEach(sample, function(value1, key)
if (text === value1)
filtered.push(value);
);
);
return filtered;
)
);
html 是:
<ul>
<li ng-repeat="x in outputphotos| myFilter:text">
<a href="#displayimage/x.imageId"><img ng-src="x.url"></a>
</li>
</ul>
并且在输出中它会过滤一次。但是,如果我第二次输入标签,则它不会过滤。 并在控制台中显示错误 达到 10 次 $digest() 迭代。中止! 在最后 5 次迭代中触发的观察者:[] 不允许在转发器中重复。中继器:输出照片中的 x|我的过滤器:文本键:对象:004
我不知道如何更改此错误。
【问题讨论】:
【参考方案1】:让我猜测一下,将过滤后的数组声明 var filtered = [];
移动到 return 语句中,类似于
return (function(items, text)
var filtered = [];
我相信您没有清除旧过滤器并尝试更新再次触发手表的过滤器数组。你重复绑定到filtered
数组。
【讨论】:
【参考方案2】:在 Angular.js 中试试这个:
函数 $RootScopeProvider() var TTL = 10; // 增加TTL的值,默认为10
【讨论】:
以上是关于错误:达到 10 次 $digest() 迭代。中止!在最后 5 次迭代中触发的观察者:过滤器中的 []的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 Angular “10 $digest() 迭代次数达到”错误
AngularJs - 错误:达到 10 次 $digest() 迭代。中止
Angular JS:IE 错误:达到 10 次 $digest() 迭代。中止