当前位置:首页 > 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实现发送值接受值

vue实现发送值接受值

Vue 实现父子组件传值 父组件向子组件传值(props) 父组件通过 v-bind 或简写 : 向子组件传递数据。子组件通过 props 接收数据。 父组件代码: <template&g…

vue实现倒计时抢券

vue实现倒计时抢券

Vue 实现倒计时抢券功能 核心逻辑 倒计时抢券功能需要结合时间计算、状态管理和界面交互。通过 Vue 的响应式特性和生命周期钩子,可以高效实现这一需求。 实现步骤 1. 数据准备 在 Vue 组件…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以使…

vue实现博客

vue实现博客

Vue 实现博客的基本步骤 使用 Vue.js 实现一个博客系统可以分为前端和后端两部分。以下是基于 Vue 的前端实现方案,后端可以选择 Node.js、Django 或其他框架。 项目初始化 使…

vue实现波形

vue实现波形

实现波形效果的方法 在Vue中实现波形效果可以通过多种方式完成,常见的方法包括使用Canvas绘制、CSS动画或第三方库。以下是几种实现方案: 使用Canvas绘制波形 通过Canvas API动态…

vue实现导航

vue实现导航

使用 Vue Router 实现导航 Vue Router 是 Vue.js 官方提供的路由管理器,用于构建单页应用(SPA)的导航系统。以下是实现导航的基本步骤。 安装 Vue Router n…