Vue双向数据绑定原理

Vue双向数据绑定的效果的实现,用js实现效果,我觉得是触发后使用setInterval()刷新实现的,今天没事了解一下:vue

实现双向数据绑的方法:angularjs

1.发布者—订阅者模式(backbone.js);浏览器

object.observe() 浏览器已废弃;app

2.脏值检查(anguar.js);性能

指定事件(ng-click/$http/$location/$interval/$digest(只触发当前及子做用域的监控)||$apply(可参数,做用域树上全部监控,推建使用)...)触发时进入脏值检测view和model是否变化,决定同步更新,经过$watch/setInterval()定时轮询检测数据变更;形象的例子解释脏检查机制:双向绑定

======"脏检查机制"(dirty-checking)===========事件

$digest:“嘿,watcher1,你的值是什么?”backbone

watcher1:"是 ‘ngBook’。"作用域

$digest:“好的,你的值改变过吗?(脏了吗?)”同步

watcher1:"没有,$digest先生。"

$digest(心想):这个watcher1的没改变过,那咱们继续下一个吧。

.......

$digest:“嘿,watcher2,你的值是什么?”

watcher2:"报告,是 ‘破狼’。"

$digest:“刚才被改变吗?”

watcher2:"已经被改变过了,刚才的值是‘雪狼’,正等待你的到来呢"

$digest(心想):很好,看来咱们的DOM一会须要更新了。

...继续watcher3/4/5...的询问、检查....最后遍历所改变的watcher。

缺点:遍历轮询watcher消耗性能,特别是单页面监控数量达到很大数量时候。

=================

$digest和$apply

angularjs双向数据绑定原理

3.数据劫持;

object.defineProperty()

vue的双向绑定原理及实现

剖析Vue原理&实现双向绑定MVVM

相关文章
相关标签/搜索