前言
vue的双向绑定原理本文就不再赘述了,采用了MVVM模式(Model—View—ViewModel)
实现思路
首先要有一个Vue类,Vue.data存储着数据,然后采用发布-订阅模式:所有的显示Vue.data数据的标签元素都是一个订阅者,他们都在等待发布者使用notify()方法来通知所有订阅者,然后调用自身的update()方法更新数据。
Vue.data中数据变化则要调用notify()方法,所以要进行数据劫持,使用Object.defineProperty()中的set来实现。
本文实现v-text与v-model的input:type=text两类标签,前者只能接受数据变化的更新,后者还可以修改存储的数据。因此,我设置了两个订阅者类,一个是只接受更新的父类ÿ