当前位置:首页 > VUE

vue v-model实现

2026-01-20 03:33:09VUE

Vue v-model 实现原理

Vue 的 v-model 是一个语法糖,用于在表单元素或自定义组件上实现双向数据绑定。其核心原理是通过结合 value 属性和 input 事件(或其他类似事件)来实现数据的同步。

在表单元素上的实现

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

<input v-model="message">

等价于:

<input 
  :value="message" 
  @input="message = $event.target.value"
>
  • :value 将数据 message 绑定到输入框的 value 属性。
  • @input 监听输入事件,将输入框的值赋给 message

在自定义组件上的实现

在自定义组件中,v-model 默认绑定 value 属性和 input 事件。可以通过 model 选项修改默认行为。

默认实现:

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

等价于:

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

自定义组件的实现:

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

修改默认的 prop 和事件

从 Vue 2.2.0 开始,可以通过 model 选项修改 v-model 绑定的 prop 和事件:

Vue.component('custom-component', {
  model: {
    prop: 'checked',  // 修改默认的 prop 为 checked
    event: 'change'   // 修改默认的事件为 change
  },
  props: ['checked'],
  template: `
    <input 
      type="checkbox" 
      :checked="checked" 
      @change="$emit('change', $event.target.checked)"
    >
  `
})

Vue 3 中的变化

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

  • 默认绑定 modelValue prop 和 update:modelValue 事件。
  • 支持多个 v-model 绑定(如 v-model:title)。

自定义组件示例:

app.component('custom-component', {
  props: ['modelValue'],
  template: `
    <input 
      :value="modelValue" 
      @input="$emit('update:modelValue', $event.target.value)"
    >
  `
})

总结

v-model 的核心是通过 prop 和事件的组合实现双向绑定。在表单元素中自动处理,在自定义组件中需要显式实现 prop 和事件的绑定。Vue 3 进一步扩展了其功能,支持更灵活的使用方式。

vue v-model实现

标签: vuemodel
分享给朋友:

相关文章

vue实现原理

vue实现原理

Vue 实现原理 Vue.js 的核心实现原理主要包括响应式系统、虚拟 DOM、模板编译和组件化机制。以下是关键实现原理的详细解析: 响应式系统 Vue 2.x 使用 Object.defineP…

vue 实现简单登陆

vue 实现简单登陆

以下是一个使用 Vue 3 实现的简单登录功能示例,包含表单验证和基础交互逻辑: 创建 Vue 组件 <template> <div class="login-containe…

vue实现展开与收起

vue实现展开与收起

Vue 实现展开与收起功能 在 Vue 中实现展开与收起功能可以通过多种方式完成,以下是一些常见的方法: 使用 v-show 或 v-if 控制显示 通过 Vue 的指令 v-show 或 v-if…

vue实现签约合作弹窗

vue实现签约合作弹窗

实现签约合作弹窗的步骤 使用Vue实现签约合作弹窗可以通过组件化方式完成,结合模态框和表单交互逻辑。以下是具体实现方法: 1. 创建弹窗组件 新建一个Vue组件文件(如SignContractDia…

vue 实现

vue 实现

Vue 实现的基本步骤 安装 Vue.js 可以通过 npm 或 CDN 引入。使用 npm 安装适合大型项目,CDN 适合快速原型开发。 npm install vue 在 HTML 文件中引入…

vue组件实现

vue组件实现

Vue 组件实现基础 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。组件的实现包括定义、注册、数据传递和生命周期管理等。 定义组件 组件可以通过单文件组件(.…