1.数据绑定
angular属于MVVM模式,视图更新后自动更新数据模型,数据模型更新后自动更新视图。
2.脏值检测
$watch:检测模型和视图是否同步,若没有同步,它将会使用新值来更新模型数据。即监控变量的变化,若变量值发生变化,执行$watch。
$digest:触发当前作用域和它的子作用域上的$watch。
$apply:触发整个作用域树上的所有$watch。
$watch队列:在模板上绑定一个东西,就会往$watch队列里插入一条$watch。
$digest循环:由两个更小的循环组合起来的,一个处理evalAsync队列,另一个处理$watch队列。$digest会遍历$watch队列(即脏值检测),更新模型的值。一次遍历完$watch队列后,若有$watch更新,重新开始遍历$watch队列,... 直到遍历$watch队列没有更新(如果遍历超过10次,它会抛出一个异常,防止无限循环)循环结束。循环结束后,根据模型的值更新DOM。可以使用$apply方法,触发整个树状作用域的$digest循环。
3.触发脏值检测($apply或$digest)
(1) 自动触发
setTimeout、click事件等。
(2)手动触发
a.调用$apply b.调用$digest
[1]http://www.angularjs.cn/A0a6
时间: 2024-11-05 08:22:36