angular.js的$digest循环

来源:互联网 发布:java写hello world 编辑:程序博客网 时间:2024/06/06 17:53

$digest循环分为两个部分:

  • $watch列表
  • $evalAsync列表

$watch列表($$watchers)

watchdigest循环期间监控的所有变化的集合。digestwatch列表会在$digest循环中通过一个叫做“脏值检查”的程序解析。

脏值检测

脏值检查是一个简单的过程,可归结为一个非常基础的概念:检查值是否发生了变化,而整个应用还没同步该变化。
Angular会遍历$watch列表,如果从旧值更新后的值没有发生变化,它会继续遍历监控列表。如果值发生了变化,该应用会启用新值并继续遍历$watch列表,Anguar遍历完整个$watch列表,只要有任何值发生变化,应用将会退回到$watch循环中,直到检测到不再有任何变化。

$evalAsync 列表($$asyncQueue

$evalAsync()方法是一种在当前作用域上调度表达式在未来某个时刻运行的方式。$digest循环运行的第二个操作是执行$$asyncQueue。可以使用$evalAsync()方法访问这个工作队列。

$apply

Created with Raphaël 2.1.0调用$apply进入angular上下文调用$digest循环脏值检测检测到无变化退出$digest,控制权交给浏览器yesno
0 0
原创粉丝点击