MVVM 实现了什么。
View(dom) ? ViewModel ? Model(javascript)
Model通过vm数据绑定(Date Binding)来更新View代码(updateView)
M ? V
Model的动态变化 通过vm 动态更新到View。
1.VM实现了一个数据监听器(Observe)进行数据劫持,当数据改变的时候通知订阅者(Watcher)[“diff算法在watcher的update方法里面。”],Watcher接收到需要更新的数据,更新View(视图)。
2.实现了一个Compile(解析指令),将模版中的变量替换成数据{{****}},并绑定更新函数,添加数据订阅者(Watcher)。一旦数据变动,接收通知改变视图。
View(dom) ? ViewModel ? Model(javascript)
vm监听dom事件的变化(DOM Listeners),Model随着View触发事件而改变
V ? M
View的触发事件,通过vm 实现Dom元素监听者(Dom Listener)监听事件触发,从而触发Model事件变化。
当Model事件变化的时候执行M->V过程进行更新视图
触发render(渲染dom)的时机。
VM实例初始化时。
Model动态修改时。