stay hungry stay foolish

Angularjs双向数据绑定原理

angular并不存在定时脏检测。angular 对常用的 dom 事件,xhr 事件等做了封装,在里面触发进入 angular 的digest流程。在digest流程里面,会从rootscope开始遍历,检查所有的watcher

谈起angular的脏检查机制(dirty-checking), 常见的误解就是认为: ng 是定时轮询去检查 model 是否变更。 其实,ng 只有在指定事件触发后,才进入$digest cycle

  • angular 系统自带 DOM 事件,譬如用户输入文本,点击按钮等。(ng-click)
  • XHR 响应事件 ($http)
  • 浏览器 Location 变更事件 ($location)
  • Timer 事件($timeout, $interval)
  • 执行$digest()$apply()