【问题标题】:Error:10 $digest() iterations reached. Aborting! Watchers fired in the last 5 iterations: [] in filter错误:达到 10 次 $digest() 迭代。中止!在最后 5 次迭代中触发的观察者:过滤器中的 []
【发布时间】: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

我不知道如何更改此错误。

【问题讨论】:

    标签: angularjs


    【解决方案1】:

    让我猜测一下,将过滤后的数组声明 var filtered = []; 移动到 return 语句中,类似于

    return (function(items, text)
    {
        var filtered = [];
    

    我相信您没有清除旧过滤器并尝试更新再次触发手表的过滤器数组。你重复绑定到filtered数组。

    【讨论】:

      【解决方案2】:

      在 Angular.js 中试试这个:

      函数 $RootScopeProvider() { var TTL = 10; // 增加TTL的值,默认为10

      【讨论】:

        猜你喜欢
        • 2014-11-01
        • 2017-01-11
        • 2016-07-21
        • 2016-05-25
        • 1970-01-01
        • 2015-05-07
        • 2015-05-30
        • 2013-11-10
        相关资源
        最近更新 更多