错误:达到$ $ digest()迭代。中止!观察者在过去的5次迭代中被解雇:[]在过滤器中

时间:2014-08-30 05:58:22

标签: angularjs

在我的程序中显示图像列表。然后我用标签名称过滤它。 所以这是我的过滤器。

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次迭代中被解雇:[] 不允许在转发器中重复。 Repeater:输出照片中的x | myFilter:text key:object:004

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

2 个答案:

答案 0 :(得分:2)

让我猜一想,将过滤后的数组声明var filtered = [];移到return语句中,例如

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

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

答案 1 :(得分:0)

在Angular.js中尝试:

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