angular的运行就是在JavaScript context里自己实现一套环境。angular环境。在angular context里面也有一个队列。watch列表。列表里面就是那些被监听的变量、(包含数据绑定的变量,和view绑定的)。若用户改变了一个绑定数据的view没出发angular函数$apply把事件放入队列。轮循到这个时候就触发。把改变的值更新到绑定的那个变量。在调用digest函数轮循watch列表。看列表中的值是否有变动。
angular中的轮循至少两遍。第一遍轮循可能在改写DOM的时候可能会触发其他watch列表里面的变量变化,再轮循知道变量不再变化。
Vue数据绑定--数据劫持
vue.js采用的数据劫持结合发布者-订阅者的模式
通过Object.defineProperty()来劫持各个属性的getter、setter。在数据变动时发布消息给订阅者,触发相应的监听回调函数。
对比angular、和Vue机制
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 前端这几年的技术发展很快,细分下来,主要可以分成四个方面: 开发语言技术,主要是ES6&7,coffeescrip...
- 对于批判性思维的定义有很多的分歧,教育学家、哲学家、心理学家都试图给批判性思维一个明确的定义,但是这些都是徒...