当前位置:首页 > VUE

vue如何实现vmodel

2026-01-17 03:28:40VUE

Vue 中实现 v-model 的方法

v-model 是 Vue 中用于实现表单元素和数据双向绑定的指令。其本质是语法糖,结合了 value 属性和 input 事件的封装。以下是实现 v-model 的几种方式:

在表单元素上使用 v-model

对于原生表单元素(如 inputtextareaselect),直接使用 v-model 即可实现双向绑定:

<template>
  <input v-model="message" placeholder="请输入内容">
  <p>{{ message }}</p>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>

在自定义组件中实现 v-model

若需在自定义组件中支持 v-model,需通过 model 选项或 Vue 2.6+ 的 v-bind.sync 或 Vue 3 的 v-model 语法实现。

Vue 2 实现方式:

  1. 默认情况下,v-model 会绑定 value 属性和监听 input 事件。
    
    <template>
    <custom-input v-model="message"></custom-input>
    </template>
export default { data() { return { message: '' } } } ``` 2. 自定义组件内部需显式处理 `value` 和 `input`: ```html export default { props: ['value'] } ```

Vue 3 实现方式: Vue 3 中 v-model 默认绑定 modelValue 属性和 update:modelValue 事件。

vue如何实现vmodel

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

<script>
export default {
  data() {
    return {
      message: ''
    }
  }
}
</script>

自定义组件内部:

<template>
  <input
    :value="modelValue"
    @input="$emit('update:modelValue', $event.target.value)"
  >
</template>

<script>
export default {
  props: ['modelValue']
}
</script>

修改 v-model 的默认行为

在 Vue 2 中,可通过 model 选项修改绑定的属性和事件:

export default {
  model: {
    prop: 'checked',  // 将默认的 `value` 改为 `checked`
    event: 'change'   // 将默认的 `input` 改为 `change`
  },
  props: ['checked']
}

使用 .sync 修饰符(Vue 2)

.sync 是另一种双向绑定的方式,通过 update:propName 事件实现:

vue如何实现vmodel

<custom-input :title.sync="pageTitle"></custom-input>

组件内部:

this.$emit('update:title', newValue)

Vue 3 的多 v-model 绑定

Vue 3 支持多个 v-model 绑定:

<user-name
  v-model:first-name="firstName"
  v-model:last-name="lastName"
></user-name>

组件内部需分别处理对应的属性和事件:

<input
  :value="firstName"
  @input="$emit('update:firstName', $event.target.value)"
>
<input
  :value="lastName"
  @input="$emit('update:lastName', $event.target.value)"
>

总结

  • 原生表单元素直接使用 v-model
  • 自定义组件需通过 props$emit 实现双向绑定。
  • Vue 2 默认绑定 valueinput,可通过 model 选项修改。
  • Vue 3 默认绑定 modelValueupdate:modelValue,支持多 v-model
  • .sync 是 Vue 2 中替代多 v-model 的方案。

标签: 如何实现vue
分享给朋友:

相关文章

vue实现tab换行

vue实现tab换行

Vue实现Tab切换的常见方法 使用Vue实现Tab切换功能可以通过多种方式完成,以下是几种常见的方法: 动态组件结合v-if或v-show 通过v-if或v-show控制不同Tab内容的显示…

vue登录业务的实现

vue登录业务的实现

实现登录业务的基本流程 在Vue中实现登录业务通常涉及前端界面设计、表单验证、API请求交互、状态管理以及路由控制等环节。以下是核心实现步骤: 登录表单设计与验证 创建包含用户名和密码输入框的登录组…

vue实现按钮组轮换

vue实现按钮组轮换

实现按钮组轮换的方法 在Vue中实现按钮组轮换效果可以通过动态绑定类和事件处理来完成。以下是一种常见的实现方式: 模板部分 <template> <div class="…

vue实现继承语法糖

vue实现继承语法糖

在Vue中实现继承可以通过多种方式模拟类继承的效果,以下是常见的几种方法: 使用mixins实现逻辑复用 通过Vue的mixins机制共享组件选项,达到类似继承的效果: const Bas…

vue实现多选题

vue实现多选题

Vue实现多选题的方法 使用Vue实现多选题功能,可以通过v-model绑定数组、动态渲染选项、以及处理选中状态来实现。以下是一个完整的实现示例: 基础实现代码 <template>…

vue前端实现下载进度

vue前端实现下载进度

实现下载进度条的基本思路 在Vue中实现下载进度条,通常需要结合XMLHttpRequest或Fetch API来监听下载进度事件。通过计算已下载数据与总数据的比例,动态更新进度条的显示。 使用X…