也可以帮助我们诊断。
我们有一个Angular 1.6滤波器,该滤波器一直在启动。
HTML看起来像:
<div class="row" ng-repeat="(promptId, q) in (categoryDoubleFiltered = (categoryFiltered |
custom:searchText:selectAllCheckbox:answeredCheckbox))">
因此,有3个参数传递给过滤器=>
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
};
});
在我们的html中,(promptid,q(键/值,我们有标准的 ng-model
和 ng-click
东西。但是我不明白为什么要调用过滤器,除非更改过滤器的输入之一!当我们悬停在<a>
标签上时,甚至会调用过滤器。
什么到了?我们该怎么做才能阻止它被称为太多?
,除非您使用的是原语,否则过滤器将每$摘要多次发射。在这种情况下,看来您正在运行无限的摘要。您可以通过使用此验证来查看是否确实在运行不间断的摘要:
var digestCount = 0;
$rootScope.$watch(function() {
digestCount++;
console.log(digestCount);
});
我建议您追踪无限摘要的原因,并将其修复以使您的过滤器正常工作。