我们有一个Angular 1.6过滤器,可以一直开火。
HTML看起来像:
<div class="row" ng-repeat="(promptId, q) in (categoryDoubleFiltered = (categoryFiltered |
custom:searchText:selectAllCheckbox:answeredCheckbox))">
因此有3个参数传递给filter =&gt;
searchText:selectAllCheckbox:answeredCheckbox
这是过滤器:
app.filter('custom', function () {
return function (input, search, selectAllCheckbox, selectAnswered) {
console.log('filter is invoked!');
// do our filtering thing
// return some subset of input
};
});
在我们针对(promptId,q)键/值的HTML中,我们有标准的ng-model
和ng-click
内容。但我不明白为什么应该调用过滤器,除非过滤器的一个输入发生变化!?当我们将鼠标悬停在<a>
标记上时,甚至会调用过滤器。
到底是什么?我们可以做些什么来阻止它被召唤这么多?
答案 0 :(得分:1)
除非您使用原语,否则过滤器将每$摘要多次触发。在这种情况下,您似乎有无限的摘要在运行。您可以使用此方法验证是否确实运行了不间断摘要:
var digestCount = 0;
$rootScope.$watch(function() {
digestCount++;
console.log(digestCount);
});
我建议您跟踪无限摘要的原因并进行修复以使过滤器正常工作。也可以帮助我们进行诊断。