简略版理解
- 创建vue实例时候,
1. 会通过Object.defineProperty()
和addEventListener()
,对data中的所有数据绑定一个数据监听器Observer。
2. 在页面第一次渲染的时候就给每一个和data有关的节点绑定观察者(watcher),并且将同一个data数据的watcher归类到一个dep数组中,当data中某一数据更改时便会调用这个数据的set
函数,进而对该数据所有的对应节点进行更新。
3. 只要你表单中的数据发生变化了,他就会触发addEventListener()
绑定的事件。
4.addEventListener()
绑定的事件就会触发Object.defineProperty()
中的set
函数进而对data中对应的数据进行更新 - data中的数据发生变化时
1. 表单所引起的data数据变化一定会触发Object.defineProperty()
中的set
函数,所以在set
函数中加入一条能够使所有与data中变化数据相关的节点都进行更新的指令。
2. 当data中某一数据更改时便会调用这个数据的set
函数,通知所有和该data数据有关的watcher进行也进行重新渲染。
这也就实现了数据的双向绑定