AngularJS的$ watch函数如何工作?

我现在正在阅读很多关于AngularJS的文章,并且我遇到了这个神奇的$ watch功能。 我明白如何使用它,但我想知道它是如何在后台实现的。 它是一个时间间隔函数吗? 或者它是否角度地称这个手表执行了每一个声明?

我现在不想深入研究源代码,如果你们其中一位已经知道答案并想分享他对这个主题的知识,我会很高兴。

谢谢。


所有手表都会评估(有时多次)每个摘要循环。 摘要循环是由于某些事件或调用$ apply()而输入的。 手表不是基于定时器周期性地调用的。

请参阅https://docs.angularjs.org/guide/scope#integration-with-the-browser-event-loop

浏览器的事件循环等待事件到达。 事件的回调得到执行......一旦回调执行,浏览器就会离开JavaScript上下文并根据DOM更改重新呈现视图。 Angular通过提供自己的事件处理循环来修改正常的JavaScript流程。 这将JavaScript分解为经典和Angular执行上下文...... Angular执行[some] stimulusFn(),它通常会修改应用程序状态。 Angular进入$ digest循环。 该循环由处理$ evalAsync队列和$ watch列表的两个较小的循环组成。 $ digest循环持续迭代,直到模型稳定,这意味着$ evalAsync队列为空,$ watch列表不检测任何更改。 $ watch列表是一组表达式,自上次迭代以来可能发生了变化。 如果检测到更改,则会调用$ watch函数,该函数通常会使用新值更新DOM。

在这里输入图像描述

链接地址: http://www.djcxy.com/p/23135.html

上一篇: How does AngularJS's $watch function work?

下一篇: AngularJS really slow at rendering with about 2000 elements?