Vue.js 的双向数据绑定是通过绑定指令 v-model
实现的。当输入框的值发生变化时,就会更新 Vue 实例中对应的属性的值;反之,当 Vue 实例中对应的属性的值发生变化时,输入框的值也会被更新。实现原理可以概述为以下几个步骤:
-
当
v-model
指令被解析时,会将输入框的值绑定到 Vue 实例中的一个属性上。 -
当输入框的值发生变化时,会触发
input
事件,此时会触发 Vue 实例的属性的setter
方法。 -
当 Vue 实例的属性的
setter
方法被触发时,Vue 会检查该属性是否被监听,如果有监听,则会通知所有的监听器,将更新后的值同步到所有监听器中对应的视图上。 -
当视图被更新后,会触发实际的 DOM 操作,将最新的值渲染到输入框中。
示例代码如下:
<template>
<div>
<input type="text" v-model="message">
<p>{{message}}</p>
</div>
</template>
<script>
export default {
data() {
return {
message: 'Hello Vue!'
}
}
}
</script>
这个例子中,输入框和 p
标签分别绑定了 message
属性,可以看到,当输入框的值发生变化时,p
标签中显示的值也会发生变化。同时,当 message
属性的值被改变时,输入框的值也会随之改变。这就是 Vue.js 的双向数据绑定实现原理。