当前位置:首页 > VUE

vue实现vmodel

2026-02-10 14:52:23VUE

Vue 实现 v-model

在 Vue 中,v-model 是一个语法糖,用于在表单元素或自定义组件上实现双向数据绑定。以下是实现 v-model 的几种方式:

在表单元素上使用 v-model

v-model 可以直接用于原生表单元素(如 inputtextareaselect),它会根据元素类型自动绑定对应的属性和事件。

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

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

v-model 在表单元素上默认绑定了 value 属性和 input 事件。

在自定义组件上使用 v-model

在自定义组件中,v-model 默认绑定 value 属性和 input 事件。可以通过 model 选项修改默认行为。

<template>
  <CustomInput v-model="message" />
  <p>输入的内容是:{{ message }}</p>
</template>

<script>
import CustomInput from './CustomInput.vue'

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

CustomInput.vue 中:

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

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

使用 model 选项修改默认绑定

如果需要修改默认的 valueinput 绑定,可以在组件中使用 model 选项:

<template>
  <CustomInput v-model="message" />
</template>

<script>
export default {
  model: {
    prop: 'checked',  // 修改绑定的属性名
    event: 'change'   // 修改绑定的事件名
  },
  props: ['checked'],
  methods: {
    handleChange(e) {
      this.$emit('change', e.target.checked)
    }
  }
}
</script>

Vue 3 中的 v-model

在 Vue 3 中,v-model 的行为有所变化。默认情况下,v-model 绑定的是 modelValue 属性和 update:modelValue 事件。

<template>
  <CustomInput v-model="message" />
</template>

<script>
import CustomInput from './CustomInput.vue'

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

CustomInput.vue 中:

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

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

多个 v-model 绑定

Vue 3 支持在单个组件上绑定多个 v-model

<template>
  <UserForm
    v-model:name="userName"
    v-model:age="userAge"
  />
</template>

<script>
import UserForm from './UserForm.vue'

export default {
  components: { UserForm },
  data() {
    return {
      userName: '',
      userAge: 0
    }
  }
}
</script>

UserForm.vue 中:

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

<script>
export default {
  props: ['name', 'age']
}
</script>

总结

v-model 是 Vue 中实现双向数据绑定的便捷方式。在表单元素中,它自动绑定 valueinput;在自定义组件中,可以通过 props$emit 手动实现。Vue 3 对 v-model 进行了改进,支持多个绑定和自定义属性名。

vue实现vmodel

标签: vuevmodel
分享给朋友:

相关文章

项目基于vue实现

项目基于vue实现

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

vue实现好评弹框

vue实现好评弹框

Vue 实现好评弹框的方法 使用 Vue 实现好评弹框可以通过组件化方式完成,结合动态数据绑定和事件处理。以下是具体实现步骤: 1. 创建弹框组件 新建一个 RatingDialog.vue…

vue调用接口实现退出

vue调用接口实现退出

实现Vue退出功能的步骤 在Vue中调用接口实现退出功能通常需要与后端API交互,以下是实现方法: 前端实现 创建退出方法,调用后端API接口: methods: { logout() {…

vue实现一个标签选择

vue实现一个标签选择

Vue 标签选择组件实现 基础实现 使用 Vue 的 v-for 和 v-model 指令可以快速实现标签选择功能: <template> <div class="tag-se…

antd vue 实现

antd vue 实现

使用 Ant Design Vue 实现功能 Ant Design Vue 是基于 Vue.js 的 UI 组件库,提供了丰富的组件和设计规范。以下是一些常见功能的实现方法。 安装 Ant Des…

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…