22

我对 Angular 很陌生,但我觉得这有点疯狂。

我在一个控制器范围内通过 ng-repeat 显示了多个集合。每个列表都有一个输入字段来执行简单的查询。我在我的代码中使用了各种过滤器,最后我在我的过滤器函数中放置了一个 console.log。我意识到每次为一个列表调用我的过滤器函数时,都会为范围内的所有列表调用它。此外,它每次调用过滤器函数两次。因此,对于 3 个集合,过滤其中一个列表将调用过滤器函数 6 次。

我想也许这只是我的自定义过滤器,所以我在默认过滤器功能上尝试了它。相同的故事。这是我的代码:

https://dl.dropbox.com/u/905197/angular-filter-test.html

转到控制台并亲自查看:/

我在这里做错了什么?这似乎是一件很简单的事情,但它做了很多工作。

4

1 回答 1

25

这是正常的,angularjs 使用了 'dirty-check' 的方法,所以它需要调用所有的过滤器来查看是否存在任何变化。在此之后,它检测到您对一个变量(您键入的变量)进行了更改,然后再次重新执行所有过滤器以检测它是否有其他更改。

看这个问题的第一个答案

于 2012-07-26T20:19:08.513 回答