当前位置:首页 > VUE

vue组件实现vmodel

2026-03-08 18:18:38VUE

Vue 组件实现 v-model

在 Vue 中,v-model 是双向数据绑定的语法糖,默认用于表单元素。自定义组件也可以通过实现 v-model 来支持双向绑定。以下是实现方法:

默认实现方式(Vue 2 和 Vue 3 兼容)

Vue 的 v-model 默认会利用 value 属性和 input 事件实现双向绑定。

子组件代码:

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

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

父组件使用:

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

Vue 3 的 v-model 改进

Vue 3 中 v-model 默认使用 modelValue 属性和 update:modelValue 事件,支持多个 v-model 绑定。

子组件代码:

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

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

父组件使用:

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

自定义 v-model 参数

Vue 3 允许为 v-model 指定参数,实现多个双向绑定。

子组件代码:

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

<script>
export default {
  props: ['title'],
  emits: ['update:title']
}
</script>

父组件使用:

<custom-input v-model:title="pageTitle"></custom-input>

处理复杂数据类型的 v-model

对于复杂数据类型(如对象),可以直接传递并更新整个对象。

子组件代码:

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

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

父组件使用:

vue组件实现vmodel

<custom-input v-model="formData"></custom-input>

通过以上方法,可以灵活地在自定义组件中实现 v-model 功能,满足不同场景的需求。

标签: 组件vue
分享给朋友:

相关文章

vue实现添加用户

vue实现添加用户

Vue 实现添加用户功能 数据绑定与表单设计 在 Vue 中实现添加用户功能,首先需要设计一个表单,用于收集用户输入的数据。通过 v-model 实现双向数据绑定,确保表单数据与 Vue 实例中的数据…

vue实现视频会议

vue实现视频会议

使用 Vue 实现视频会议 技术选型 Vue.js 作为前端框架,结合 WebRTC 技术实现实时音视频通信。常用的库包括: peerjs:简化 WebRTC 的点对点连接。 socket.io:用…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式:…

实现vue组件

实现vue组件

Vue 组件的基本实现 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。以下是实现 Vue 组件的几种方式: 单文件组件 (SFC) 使用 .vue 文件格式,…

vue实现hover

vue实现hover

Vue 实现 hover 效果的方法 在 Vue 中实现 hover 效果可以通过多种方式实现,包括使用 CSS、Vue 指令或事件监听。以下是几种常见的方法: 使用 CSS :hover 伪类 通…

vue实现login

vue实现login

Vue 实现登录功能 在 Vue 中实现登录功能通常需要以下几个步骤: 创建登录表单组件 在 Vue 项目中创建一个登录表单组件,包含用户名和密码输入框以及提交按钮。可以使用 Vue 的模板语法和双…