当前位置:首页 > 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实现项目的关键方法 搭建基础环境 安装Node.js和npm/yarn,确保开发环境具备运行Vue的能力。通过Vue CLI快速初始化项目结构,选择所需配置(如Babel、Router、Vu…

vue实现选中单元格

vue实现选中单元格

Vue 实现选中单元格的方法 基础实现思路 在 Vue 中实现选中单元格功能,通常可以通过动态绑定 class 或 style 来实现。以下是一个基于表格的简单实现示例: <template&…

vue全选实现

vue全选实现

Vue 全选实现方法 在 Vue 中实现全选功能通常涉及数据绑定和事件处理。以下是几种常见的实现方式: 基础实现方式 <template> <div> <…

vue实现$.extend

vue实现$.extend

Vue 实现类似 jQuery 的 $.extend 功能 在 Vue 中实现类似 jQuery 的 $.extend 功能,可以通过多种方式完成。$.extend 主要用于合并多个对象的属性,Vue…

vue实现登出

vue实现登出

实现Vue登出功能 登出功能通常涉及清除用户会话、令牌或本地存储的数据,并重定向到登录页面。以下是几种常见的实现方式: 清除用户令牌和状态 在Vuex的store中定义一个logout mutati…

vue实现frame

vue实现frame

Vue 中实现 iframe 的方法 在 Vue 中可以通过直接使用 <iframe> 标签或动态绑定 src 属性来实现 iframe 功能。 基本用法 <template&g…