当前位置:首页 > VUE

vue v model 实现原理

2026-01-21 20:00:33VUE

Vue v-model 实现原理

v-model 是 Vue 中用于实现表单元素和数据双向绑定的指令。其本质是一个语法糖,结合了 :value 绑定和 @input 事件监听。

基本实现机制

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

  • 文本输入框(input type="text")
    绑定 value 属性和 input 事件:

    <input :value="message" @input="message = $event.target.value" />
  • 复选框(checkbox)
    绑定 checked 属性和 change 事件:

    vue v model 实现原理

    <input 
      type="checkbox" 
      :checked="isChecked" 
      @change="isChecked = $event.target.checked" 
    />
  • 单选按钮(radio)
    绑定 checked 属性和 change 事件:

    <input 
      type="radio" 
      :checked="selectedOption === value" 
      @change="selectedOption = value" 
    />

自定义组件中的 v-model

在 Vue 2.x 中,自定义组件默认通过 value prop 和 input 事件实现 v-model:

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

在 Vue 3.x 中,可以通过 modelValue prop 和 update:modelValue 事件实现:

vue v model 实现原理

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

底层原理

  1. 编译阶段
    Vue 模板编译器会将 v-model 转换为对应的 :value@input(或其他事件)的组合。

  2. 运行时处理
    根据元素类型动态绑定对应的属性和事件,确保数据变化能同步到视图,视图输入能同步到数据。

  3. 自定义组件扩展
    支持通过 model 选项(Vue 2.x)或直接定义 prop/event(Vue 3.x)实现自定义 v-model 逻辑。

标签: 原理vue
分享给朋友:

相关文章

vue实现安全免登录

vue实现安全免登录

Vue 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Toke…

vue实现走势图

vue实现走势图

Vue 实现走势图的方法 使用 ECharts 库 ECharts 是一个强大的数据可视化库,支持多种图表类型,包括走势图(折线图)。在 Vue 项目中可以通过 vue-echarts 封装库或直接使…

vue实现下拉刷新组件

vue实现下拉刷新组件

实现下拉刷新组件的核心思路 下拉刷新功能通常通过监听触摸事件、滚动位置和动画效果实现。Vue中可以利用自定义指令或封装组件完成,以下为两种常见实现方式。 基于自定义指令的实现 创建指令监听触摸事件…

vue实现绑卡的原理

vue实现绑卡的原理

Vue 实现绑卡的原理 Vue 实现绑卡功能通常涉及前端表单处理、数据绑定、验证以及和后端 API 的交互。以下是实现绑卡功能的核心原理和步骤: 数据绑定与表单处理 Vue 通过 v-model…

vue实现生成二维码

vue实现生成二维码

使用qrcode.vue库生成二维码 安装qrcode.vue库: npm install qrcode.vue --save 在Vue组件中使用: <template> <…

vue实现视窗

vue实现视窗

Vue 实现视窗功能 在 Vue 中实现视窗功能通常涉及监听浏览器窗口大小变化、响应式布局或创建自定义弹窗组件。以下是几种常见实现方式: 监听浏览器窗口大小变化 使用 Vue 的 mounted 和…