标题几乎不言自明。我想知道为了更新视图,AngularJS是如何“知道”模型中的某些更改的。
无论它正在做什么,以实现这一点。它不会影响总体性能吗?
发布于 2015-12-30 04:32:05
William Moss去年就Angular的$watch进程及其对性能的影响做了一次精彩的演讲。强烈推荐!请在此处查看talk:https://www.youtube.com/watch?v=wbcJfg-d5nI
发布于 2015-12-30 04:43:21
每次在浏览器中加载网页时,AngularJS应用程序的生命周期都会经历三个阶段。以下各节描述了AngularJS应用程序的这些阶段。
引导阶段
AngularJS生命周期的第一个阶段是引导阶段,该阶段在将AngularJS JavaScript库下载到浏览器时发生。AngularJS初始化它自己的必要组件,然后初始化ng-app指令所指向的模块。模块被加载,任何依赖项都被注入到模块中,并可供模块内的代码使用。
编译阶段
AngularJS生命周期的第二个阶段是HTML编译阶段。最初,当加载网页时,DOM的静态形式被加载到浏览器中。在编译阶段,静态DOM被替换为表示AngularJS视图的动态DOM。
此阶段包括两部分:遍历静态DOM并收集所有指令,然后将指令链接到AngularJS内置库或自定义指令代码中的适当JavaScript功能。指令与作用域相结合,以生成动态或实时视图。
运行时数据绑定阶段
AngularJS应用程序的最后一个阶段是运行时阶段,该阶段一直存在,直到用户重新加载或离开网页。此时,范围中的任何更改都会反映在视图中,而视图中的任何更改都会直接在范围中更新,从而使范围成为视图的单一数据源。
AngularJS的行为与绑定数据的传统方法不同。传统方法将模板与从引擎接收的数据组合在一起,然后在每次数据更改时操作DOM。AngularJS只编译一次DOM,然后根据需要链接编译后的模板,这使得它比传统方法更有效。
不知羞耻地从布拉德·戴利的“Learning AngularJS”一书中抄袭过来。
这个过程在Angular站点的Scope Life Cycle部分中有详细介绍。请向下滚动到“Scope Life Cycle”部分。
https://stackoverflow.com/questions/34518361
复制相似问题