技术文章

如何用javascript实现双向数据绑定?

js实现数据双向绑定,需要用到Object.defineProperty()这个对象方法,这是一个比较神奇的方法,它的作用是用于配置对象值的属性,比如:对象的某个属性是否可配置、可读写、可枚举等。它也是vue框架底层,实现数据双向绑定的核心方法。

重写对象属性的setter、getter

用Object.defineProperty()创建一个全局对象obj,并设置一个属性name,然后重写这个属性的get、set方法。在设置obj对象name属性值时,set方法会自动调用;在读取obj对象name属性时,get方法会自动调用。

javascript实现双向数据绑定

监听文本框数据事件,并更新数据

绑定文本框的输入事件,在事件中设置obj对象的name值,此时set方法会自动调用,在set方法中,拦截数据val,把val的值赋给name属性,并更新span元素显示name的值。

javascript实现双向数据绑定

运行效果如下:

javascript实现双向数据绑定

可以看到,对象obj的name属性值,在随着文本框内容的改变而改变。

改变对象属性值,更新文本框显示

在set方法中,监听到obj对象name属性值的改变,拦截数据val,把数据更新到文本框中显示。

javascript实现双向数据绑定

运行并改变obj的name值,效果如下:

javascript实现双向数据绑定

可以看到,在控制台中,改变obj的name属性值,左边文本框中的内容也发生了改变,这样,我们就实现了一个简单的,数据双向绑定操作。

javascript实现双向数据绑定