发表于: 2016-10-31 22:28:21
1 1609
2016/10/31
今天完成的事:
1. 学习$watch ,$apply 和 $digest --- 理解AngularJS的数据绑定过程。
明天计划的事:
1. 继续看AngularJS权威教程;
2. 催后端草船云接口。
今天遇到的问题:
无
收获:
1. $watch 队列($watch list):
每次你绑定一些东西到你的UI上时你就会往$watch队列里插入一条$watch。想象一下$watch就是那个可以检测它监视的model里数据变化的东西。每一个绑定到了UI上的数据都会生成一个$watch。当模版加载完毕时,也就是在linking阶段(Angular分为compile阶段和linking阶段),Angular解释器会寻找每个directive,然后生成每个需要的$watch;
2. $digest循环:
$digest将会遍历我们的$watch,这就是所谓的dirty-checking。既然所有的$watch都检查完了,那就要问了:有没有$watch更新过?如果有至少一个更新过,这个循环就会再次触发,直到所有的$watch都没有变化。这样就能够保证每个model都已经不会再变化。记住如果循环超过10次的话,它将会抛出一个异常,防止无限循环。 当$digest循环结束时,DOM相应地变化。
3. 通过$apply来进入angular context:
如果当事件触发时,你调用$apply,它会进入angular context,如果没有调用就不会进入。$apply是我们的$scope(或者是direcvie里的link函数中的scope)的一个函数,调用它会强制一次$digest循环(除非当前正在执行循环,这种情况下会抛出一个异常,这是我们不需要在那里执行$apply的标志)。
评论