当前位置:首页 > VUE

vue怎样实现双向绑定

2026-02-23 07:46:24VUE

Vue 双向绑定的实现方式

Vue 主要通过 v-model 指令实现双向绑定,它结合了 v-bindv-on 的功能,能够自动同步表单输入值与 Vue 实例的数据。

基础语法

在表单元素上使用 v-model,绑定到 Vue 实例的数据属性:

<input v-model="message" placeholder="输入内容">
<p>输入的内容是:{{ message }}</p>

对应的 Vue 实例:

new Vue({
  el: '#app',
  data: {
    message: ''
  }
})

实现原理

  1. 数据劫持
    Vue 使用 Object.definePropertyProxy(Vue 3)劫持数据的 gettersetter,在数据变化时触发视图更新。

    vue怎样实现双向绑定

  2. 模板编译
    模板中的 v-model 会被编译为 v-bindv-on 的组合。例如:

    <input v-model="message">

    等价于:

    vue怎样实现双向绑定

    <input 
      :value="message" 
      @input="message = $event.target.value"
    >
  3. 自定义组件中的双向绑定
    在组件中,v-model 默认绑定到 value prop 和 input 事件。可以通过 model 选项修改:

    Vue.component('custom-input', {
      props: ['value'],
      model: {
        prop: 'value',
        event: 'change'
      },
      template: `
        <input
          :value="value"
          @change="$emit('change', $event.target.value)"
        >
      `
    })

修饰符

  • .lazy:将 input 事件改为 change 事件(失焦后更新)
    <input v-model.lazy="message">
  • .number:自动将输入转为数字类型
    <input v-model.number="age" type="number">
  • .trim:自动去除首尾空格
    <input v-model.trim="text">

Vue 3 的改进

Vue 3 中 v-model 支持多个绑定,并默认使用 modelValueupdate:modelValue 替代 valueinput

<custom-input v-model="message"></custom-input>

等价于:

<custom-input
  :modelValue="message"
  @update:modelValue="message = $event"
></custom-input>

标签: 绑定双向
分享给朋友:

相关文章

vue 双向实现原理

vue 双向实现原理

Vue 双向绑定的实现原理 Vue 的双向绑定主要通过 v-model 指令实现,其核心是结合数据劫持(Object.defineProperty 或 Proxy)和发布-订阅模式。以下是具体实现机制…

vue实现数组双向绑定

vue实现数组双向绑定

实现数组双向绑定的方法 在Vue中,实现数组的双向绑定通常需要结合v-model指令或自定义事件处理。以下是几种常见的方法: 使用v-model绑定数组 Vue的v-model指令默认支持表单元素的…

vue双向绑定如何实现

vue双向绑定如何实现

Vue 双向绑定的实现原理 Vue 的双向绑定是通过数据劫持结合发布者-订阅者模式实现的,核心是 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)。 Vu…

vue双向数据实现

vue双向数据实现

Vue 双向数据绑定的实现原理 Vue 的双向数据绑定主要通过 v-model 指令实现,其核心是基于数据劫持和发布-订阅模式。 数据劫持(响应式原理) Vue 使用 Object.definePr…

vue实现动态绑定样式

vue实现动态绑定样式

动态绑定样式的方法 在Vue中实现动态绑定样式主要通过v-bind:class和v-bind:style指令完成,支持对象语法、数组语法等多种灵活方式。 对象语法 通过对象可以动态切换class,对…

vue中实现双向绑定

vue中实现双向绑定

Vue 双向绑定的实现方式 Vue 中实现双向绑定主要通过 v-model 指令,它结合了属性绑定和事件监听,适用于表单元素和自定义组件。 表单元素的双向绑定 在表单元素(如 input、texta…