在我的程序中,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