在我的程序中显示图像列表。然后我用标签名称过滤它。 所以这是我的过滤器。
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
我不知道如何更改此错误。
答案 0 :(得分:2)
让我猜一想,将过滤后的数组声明var filtered = [];
移到return语句中,例如
return (function(items, text)
{
var filtered = [];
我相信您没有清除旧过滤器并尝试更新再次触发手表的过滤器阵列。你重复绑定到filtered
数组。
答案 1 :(得分:0)
在Angular.js中尝试:
function $ RootScopeProvider(){ var TTL = 10; //增加TTL的值,默认值为10