angular的运行就是在JavaScript context里自己实现一套环境。angular环境。在angular context里面也有一个队列。watch列表。列表里面就是那些被监听的变量、(包含数据绑定的变量,和view绑定的)。若用户改变了一个绑定数据的view没出发angular函数$apply把事件放入队列。轮循到这个时候就触发。把改变的值更新到绑定的那个变量。在调用digest函数轮循watch列表。看列表中的值是否有变动。
angular中的轮循至少两遍。第一遍轮循可能在改写DOM的时候可能会触发其他watch列表里面的变量变化,再轮循知道变量不再变化。
Vue数据绑定--数据劫持
vue.js采用的数据劫持结合发布者-订阅者的模式
通过Object.defineProperty()来劫持各个属性的getter、setter。在数据变动时发布消息给订阅者,触发相应的监听回调函数。
网友评论