vue怎么实现双向
Vue 双向绑定实现方法
Vue 中双向绑定主要通过 v-model 指令实现,它结合了属性绑定和事件监听,常用于表单元素。
基本用法
在表单元素上使用 v-model,自动同步数据:
<input v-model="message" />
<p>{{ message }}</p>
实现原理
v-model 是语法糖,本质上是 value 属性绑定和 input 事件监听的组合:

<input :value="message" @input="message = $event.target.value" />
自定义组件双向绑定
在自定义组件中实现双向绑定,需使用 model 选项和 $emit:
<custom-input v-model="message"></custom-input>
组件内部实现:

Vue.component('custom-input', {
props: ['value'],
model: {
prop: 'value',
event: 'input'
},
template: `
<input
:value="value"
@input="$emit('input', $event.target.value)"
/>
`
})
修饰符
v-model 支持修饰符调整行为:
.lazy:将input事件改为change事件.number:自动将输入转为数字.trim:自动去除首尾空格
<input v-model.lazy="message" />
多个输入绑定
对于复选框组等场景,可绑定到数组:
<input type="checkbox" v-model="checkedNames" value="Jack">
<input type="checkbox" v-model="checkedNames" value="John">
注意事项
- 确保在
data中初始化绑定的属性 - 对于复杂对象,考虑使用深度监听
- 避免直接修改
props,应通过事件通知父组件
通过以上方法,可在 Vue 中灵活实现各种双向绑定需求。






