何为双向数据绑定?
双向数据绑定即为
1、当与用户交互时,用户修改视图上的数据(如文本框等),model中的数据也会跟着改变;
2、当model数据发生改变时,视图上渲染了该数据的地方也会跟着更新。
如何实现双向数据绑定?
数据劫持、观察者Observer、订阅者Watcher、Compile解析器
页面初次渲染
1、使用递归劫持数据,为每个对象以及每个对象的属性添加getter和setter方法(使用ES5的Object.defineProperty);
2、compile解析模板,将模板的变量解析成data中的数据;
3、为节点添加监听数据的订阅者watcher,并且自身还有update更新函数。
view改变->model更新
1、view更新,触发事件;
2、在事件回调中调用数据的setter方法,更新model中的数据;
3、在setter方法中,数据的oberve观察到了数据的变化,向订阅者们发出通知dep.notice();
4、订阅者们收到通知,并调用自身的update()方法,触发Compile中绑定的回调,重新解析模板。
model改变->view更新
以上的3-4步
(自己的理解,如有问题,请指出!)
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。