当前位置:首页 > 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>

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

相关文章

uniapp怎么给标签绑定颜色

uniapp怎么给标签绑定颜色

在 uniapp 中给标签绑定颜色 在 uniapp 中,可以通过动态绑定样式或类名的方式为标签设置颜色。以下是几种常见的方法: 动态绑定内联样式 使用 :style 绑定动态样式对象,直接在标签…

vue双向数据绑定实现

vue双向数据绑定实现

双向数据绑定的概念 双向数据绑定是指视图(View)与模型(Model)之间的双向同步。当数据发生变化时,视图自动更新;当用户操作视图时,数据也会自动更新。Vue 通过 v-model 指令实现双向数…

怎么实现vue双向绑定

怎么实现vue双向绑定

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

vue怎样实现数组绑定

vue怎样实现数组绑定

Vue 实现数组绑定的方法 Vue 提供了多种方式来实现数组的绑定,以下是常见的几种方法: 使用 v-for 指令绑定数组 通过 v-for 指令可以遍历数组并渲染列表。语法如下: <ul&…

.vue 双向绑定实现原理

.vue 双向绑定实现原理

Vue 双向绑定实现原理 Vue 的双向绑定核心是通过数据劫持结合发布-订阅模式实现的,主要依赖以下技术: 数据劫持(Object.defineProperty 或 Proxy) Vue 2.x 使…

vue怎么实现input绑定

vue怎么实现input绑定

实现 Vue 中 input 绑定的方法 使用 v-model 指令实现双向绑定 v-model 是 Vue 提供的语法糖,用于实现表单元素与数据的双向绑定。它会根据输入框类型自动选取正确的方式更新数…