【问题标题】:Is this normal for AngularJs filtering这对于 AngularJs 过滤是否正常
【发布时间】:2012-07-26 19:46:46
【问题描述】:

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

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

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

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

去控制台自己看看吧:/

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

【问题讨论】:

    标签: javascript angularjs


    【解决方案1】:

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

    查看this问题的第一个答案

    【讨论】:

    • 有趣。这就解释了为什么他们都被召唤了。现在为什么每次发生变化时都会调用两次?
    • 第一个调用来自正在检测更改的观察者。因为有一个,所以需要再次调用它们以查看是否有新闻更改,因为观察者可以进行更改。将重复此过程,直到找不到更改或“循环”达到最大交互次数(我认为是 10)。
    • 如何避免这种情况?我进行了 json 调用,但只需单击任意位置即可调用多达 10 次。
    猜你喜欢
    • 2017-01-23
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    相关资源
    最近更新 更多