关于javascript:AngularJS如何“监听”模型中的变化?

How does AngularJS “listen” to changes in the model?

本问题已经有最佳答案,请猛点这里访问。

这个标题几乎是自我解释的。我想知道AngularJS如何"知道"模型中的某些内容发生了变化,以便更新视图。

为了实现这一目标而做的一切。它不影响整体性能吗?


There are three phases of the life cycle of an AngularJS application
happen each time a web page is loaded in the browser. The following
sections describe these phases of an AngularJS application.

The Bootstrap Phase

The first phase of the AngularJS life cycle is the bootstrap phase,
which occurs when the AngularJS JavaScript library is downloaded to
the browser. AngularJS initializes its own necessary components and
then initializes your module, which the ng-app directive points to.
The module is loaded, and any dependencies are injected into your
module and made available to code within the module.

The Compilation Phase

The second phase of the AngularJS life cycle is the HTML compilation
stage. Initially when a web page is loaded, a static form of the DOM
is loaded in the browser. During the compilation phase, the static DOM
is replaced with a dynamic DOM that represents the AngularJS view.

This phase involves two parts: traversing the static DOM and
collecting all the directives and then linking the directives to the
appropriate JavaScript functionality in the AngularJS built-in library
or custom directive code. The directives are combined with a scope to
produce the dynamic or live view.

The Runtime Data Binding Phase

The final phase of the AngularJS application is the runtime phase,
which exists until the user reloads or navigates away from a web page.
At that point, any changes in the scope are reflected in the view, and
any changes in the view are directly updated in the scope, making the
scope the single source of data for the view.

AngularJS behaves differently from traditional methods of binding
data. Traditional methods combine a template with data received from
the engine and then manipulate the DOM each time the data changes.
AngularJS compiles the DOM only once and then links the compiled
template as necessary, making it much more efficient than traditional
methods.

不知羞耻地从布拉德·戴利的《学习安古拉基斯》一书中脱身。

这个过程在角位置的范围生命周期部分中有详细说明。请向下滚动到"范围生命周期"部分。


WilliamMoss去年就Angular的$watch流程及其对性能的影响进行了一次精彩的演讲。强烈推荐!请参见此处的谈话:https://www.youtube.com/watch?V= WBCJFG-D5Ni