当前位置:首页 > VUE

vue v model实现

2026-02-19 01:44:44VUE

Vue v-model 实现原理

Vue 的 v-model 是一个语法糖,用于在表单元素或组件上实现双向数据绑定。其本质是结合 value 属性和 input 事件的封装。

在表单元素上的实现

对于原生表单元素(如 inputtextareaselect),v-model 会根据元素类型自动绑定对应的属性和事件:

<input v-model="message">

等价于:

<input 
  :value="message" 
  @input="message = $event.target.value"
>
  • :value 将数据绑定到元素的 value 属性。
  • @input 监听输入事件,更新数据。

在自定义组件上的实现

对于自定义组件,v-model 默认使用 value 属性和 input 事件:

vue v model实现

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

等价于:

<custom-component 
  :value="message" 
  @input="message = $event"
></custom-component>

组件内部需要通过 props 接收 value,并在需要更新时触发 input 事件:

props: ['value'],
methods: {
  updateValue(newValue) {
    this.$emit('input', newValue);
  }
}

自定义 v-model 的属性和事件

从 Vue 2.2.0 开始,可以通过 model 选项自定义 v-model 的属性和事件:

vue v model实现

export default {
  model: {
    prop: 'checked',  // 使用 checked 属性代替 value
    event: 'change'   // 使用 change 事件代替 input
  },
  props: ['checked'],
  methods: {
    handleChange() {
      this.$emit('change', newValue);
    }
  }
}

Vue 3 中的变化

在 Vue 3 中,v-model 的默认行为有所调整:

  • 默认使用 modelValue 属性和 update:modelValue 事件。
  • 支持多个 v-model 绑定,如 v-model:title="title"
<custom-component v-model="message"></custom-component>

等价于:

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

组件内部实现:

props: ['modelValue'],
emits: ['update:modelValue'],
methods: {
  updateValue(newValue) {
    this.$emit('update:modelValue', newValue);
  }
}

总结

v-model 的核心是通过属性和事件的组合实现双向绑定。在表单元素中自动适配原生行为,在组件中可通过 model 选项(Vue 2)或默认规则(Vue 3)灵活配置。理解其实现原理有助于在需要时自定义绑定逻辑。

标签: vuemodel
分享给朋友:

相关文章

vue 实现豆瓣

vue 实现豆瓣

以下是基于 Vue 实现豆瓣电影类功能的实现方案,涵盖核心模块和技术要点: 数据获取与 API 调用 使用豆瓣开放 API(需注意调用频率限制)或第三方代理接口 推荐 axios 进行异步请求,配合…

vue实现引导

vue实现引导

Vue 实现引导功能的方法 使用第三方库 推荐使用 driver.js 或 intro.js 这类专门为 Vue 设计的引导库。这些库提供了完整的 API 和样式,能够快速实现引导功能。 安装 dr…

vue实现复选

vue实现复选

Vue 实现复选框 在 Vue 中实现复选框可以通过 v-model 指令绑定数据,同时结合 input 元素的 type="checkbox" 属性来实现。以下是几种常见的实现方式: 单个复选框…

vue监听实现

vue监听实现

Vue 监听实现方法 在 Vue 中可以通过多种方式实现监听数据变化或事件触发,以下是常见的几种方法: 使用 watch 选项 watch 是 Vue 提供的核心功能之一,用于观察和响应 Vue 实…

vue实现验证

vue实现验证

Vue 表单验证实现方法 在Vue中实现表单验证可以通过多种方式完成,以下是常见的几种方法: 使用Vuelidate库 Vuelidate是一个轻量级的Vue表单验证库,安装后可以通过简单的配置实现…

vue nexttick 实现

vue nexttick 实现

Vue nextTick 实现原理 Vue 的 nextTick 是一个用于在下次 DOM 更新循环结束之后执行延迟回调的方法。它主要用于确保在 DOM 更新完成后执行某些操作。 核心实现机制 ne…