Angular - 什么触发了双向数据绑定的摘要周期?

时间:2017-02-15 10:59:26

标签: angularjs

AngularJS如何实现双向数据绑定?模型更新的视图是可以理解的,即它可以通过JS监听器实现,但我想了解模型以查看更新?由于核心角度模型是js变量,所以Angular如何听取js变量的变化?

我知道每个型号都有一个手表,可以将新值与旧值进行比较,但触发此检查的是什么(js实现)?

是否使用Javascripts观察者或时间间隔进行检查?

1 个答案:

答案 0 :(得分:3)

  

Angular定义了一个所谓的摘要周期的概念。这个循环可以   被视为一个循环,在此过程中Angular会检查是否存在循环   更改所有$ scope监视的所有变量。所以,如果你   你的控制器中定义了$ scope.myVar,这个变量是   标记为被观看,然后你明确告诉Angular   在循环的每次迭代中监视myVar上的更改。

基本上AngularJS将事件处理程序绑定到与Angular($scopedirective,...)交互的任何元素,每次事件触发时,调用$apply内部调用{ {1}}将触发重新评估所有$digest

AngularJS巧妙地假设模型更改仅发生在用户交互/事件上:

  • DOM活动
  • XHR响应触发回调
  • 浏览器的位置更改
  • 定时器(setTimout,setInterval)触发回调

或触发某些$watches

  • 输入指令+ ngModel,ngClick,ngMouseOver等
  • $ http和$ resource
  • $位置
  • $超时

enter image description here

当这些假设中的一个'触发后,摘要周期开始:

引用Pawel Kozlowski,Mastering Web Application Development with AngularJS

  

AngularJS不会定期使用任何类型的轮询机制   检查模型更改

更详细的见解

看看https://www.youtube.com/watch?v=SYuc1oSjhgY深入了解摘要周期。