错误:达到10$digest()迭代.正在中止!观察者在最近5次迭代中被解雇:[]在筛选器中



在我的程序中,iam显示一个图像列表。然后我用标签名过滤它。这是我的过滤器。

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 |myFilter:文本键:对象:004

我不知道如何改变这个错误。

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

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

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

在Angular.js:中试试这个

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

最新更新