Vue
的双向绑定是通过数据劫持 和发布-订阅模式实现的。
在Vue
中,每一个组件都有一个对应的Watcher
实例,它会观察组件中所有需要被双向绑定 的属性。当属性的值发生变化 时,Watcher
会通知相应的Dep
对象,Dep
对象会通知所有订阅 它的Watcher
实例,然后触发组件的重新渲染。
在组件的模板中,Vue
会将需要被双向绑定的属性和组件的data
属性建立起一个响应式的关系。当用户在模板中修改了属性的值 时,Vue
会触发 相应的setter
函数,setter
函数会通知Dep
对象,Dep
对象会通知所有订阅它的Watcher
实例,然后触发组件的重新渲染。
下面的流程图可以帮助理解Vue的双向绑定原理:
data Observer Dep Watcher Component Render Template User Input Setter Dep Watcher Component Render