当前位置:首页 > 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 选项修改默认行为。

vue实现vmodel

<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 事件。

vue实现vmodel

<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 进行了改进,支持多个绑定和自定义属性名。

标签: vuevmodel
分享给朋友:

相关文章

vue前端分页怎么实现

vue前端分页怎么实现

前端分页实现方法 在Vue中实现前端分页通常涉及数据分割和页面控制逻辑。以下是常见的实现方式: 使用计算属性分页 通过计算属性对数据进行切片处理: computed: { paginatedD…

vue实现闪烁

vue实现闪烁

Vue实现元素闪烁效果 使用CSS动画实现 通过Vue绑定class结合CSS动画实现闪烁效果,代码简洁且性能较好。 <template> <div :class="{ 'bl…

vue实现图册

vue实现图册

Vue实现图册功能 在Vue中实现图册功能通常涉及图片展示、切换、缩放等交互效果。以下是常见的实现方法和关键代码示例: 基础图册组件结构 使用Vue单文件组件构建基础结构: <templat…

vue  实现tab

vue 实现tab

实现 Tab 切换功能 在 Vue 中实现 Tab 切换功能可以通过动态组件或条件渲染完成。以下是两种常见方法: 使用 v-if 或 v-show 实现条件渲染 通过绑定 currentTab 变量…

vue 实现表单

vue 实现表单

Vue 表单实现方法 Vue.js 提供了多种方式实现表单,包括双向数据绑定、表单验证和动态表单生成。以下是常见的实现方法: 基础表单绑定 使用 v-model 指令实现表单元素与数据的双向绑定:…

vue实现webapp

vue实现webapp

Vue 实现 WebApp 的基本步骤 环境准备 确保已安装 Node.js 和 npm/yarn。通过 Vue CLI 或 Vite 创建项目: npm install -g @vue/cli v…