双向绑定的实现方式有几种
1.观察者模式
2.脏值检查
3.数据劫持
观察者模式
假如现在有数据data,存在可观察对象Observable,和一些观察者Observer。当数据模型data发生改变时,Observable就通知Observer,更新视图。当页面修改了数据后,利用eventListener去更新data。难点是如何使Observable能够监听到data的变化,此种方式中,不能直接去更改data,每次修改data,需调用专门的函数,如vm.set('property', value)。
脏检查
angular中使用脏检查。
数据劫持
通过Object.defineProperty()来劫持各个属性的setter,getter。
vue.js中使用数据劫持+观察者模式实现双向绑定。
数据模型->视图
网友评论