错误:达到 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 次迭代中触发的观察者:过滤器中的 []的主要内容,如果未能解决你的问题,请参考以下文章

错误:达到 10 次 $digest() 迭代。中止

如何解决 Angular “10 $digest() 迭代次数达到”错误

AngularJs - 错误:达到 10 次 $digest() 迭代。中止

Angular JS:IE 错误:达到 10 次 $digest() 迭代。中止

范围计数器的值增加 1 会达到 10 次 $digest() 迭代。中止错误消息

达到 10 次 $digest() 迭代。中止! - 隔离范围