- 简要概括:
View的变化能实时的让Model变化,而Model得变化也能实时得更新到View
- 详解:
Vue采用数据劫持&发布-订阅模式得方法,通过ES5提供得Object.defineProperty()
方法来劫持(监控)各属性得getter,setter,并在数据(对象)发生变化得时候通知订阅者,
触发相应得回调。并且,由于是在不同的数据上触发同步,可以精确的将变更发送给绑定的
视图,而不是对所有的数据都执行一次检测。要实现Vue中的双向数据绑定,大致可以分为
三个模块:Observer、Complier、Watcher,
Observer数据监听器:负责对数据对象的所有属性进行监听(数据劫持),监听到数据
发生变化后通知订阅者。
Compiler指令解析器:扫描模板,并对指令进行解析,然后绑定指定事件。
Watcher订阅者:关联Observer和Compile,能够订阅并收到属性变化的通知,执行
指令绑定的相应操作,更新视图。Update()是它本身的一个方法,用于执行Compile中
绑定的回调,更新视图。