当前位置:首页 > VUE

vue 实现v model

2026-02-20 07:05:09VUE

Vue 中实现 v-model 的方法

v-model 是 Vue 中用于双向数据绑定的语法糖,本质上是 v-bindv-on 的组合。以下是实现 v-model 的几种方式:

在表单元素上使用 v-model

对于原生表单元素(如 inputtextareaselect),v-model 会自动绑定 value 属性和 input 事件。

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

在自定义组件上实现 v-model

在 Vue 2.x 中,自定义组件需要通过 value prop 和 input 事件实现 v-model

vue 实现v model

Vue.component('custom-input', {
  props: ['value'],
  template: `
    <input
      :value="value"
      @input="$emit('input', $event.target.value)"
    >
  `
})

在 Vue 3.x 中,v-model 的实现方式有所变化,支持多个 v-model 绑定,并且默认使用 modelValue prop 和 update:modelValue 事件。

app.component('custom-input', {
  props: ['modelValue'],
  template: `
    <input
      :value="modelValue"
      @input="$emit('update:modelValue', $event.target.value)"
    >
  `
})

修改 v-model 的默认行为

在 Vue 2.x 中,可以通过 model 选项修改 v-model 的 prop 和事件名称。

vue 实现v model

Vue.component('my-checkbox', {
  model: {
    prop: 'checked',
    event: 'change'
  },
  props: ['checked'],
  template: `
    <input
      type="checkbox"
      :checked="checked"
      @change="$emit('change', $event.target.checked)"
    >
  `
})

在 Vue 3.x 中,可以直接在 v-model 后指定参数名称。

<my-checkbox v-model:checked="isChecked"></my-checkbox>

使用计算属性实现复杂逻辑

对于需要处理复杂逻辑的场景,可以使用计算属性结合 getset 方法。

computed: {
  fullName: {
    get() {
      return this.firstName + ' ' + this.lastName
    },
    set(newValue) {
      const names = newValue.split(' ')
      this.firstName = names[0]
      this.lastName = names[names.length - 1]
    }
  }
}

在 Composition API 中使用 v-model

在 Vue 3 的 Composition API 中,可以通过 refreactive 创建响应式数据,然后直接绑定到 v-model

import { ref } from 'vue'

export default {
  setup() {
    const message = ref('')
    return { message }
  }
}
<input v-model="message" placeholder="请输入内容">

以上方法涵盖了 Vue 中实现 v-model 的主要场景,根据具体需求选择合适的方式即可。

标签: vuemodel
分享给朋友:

相关文章

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供…

vue实现visual

vue实现visual

Vue 实现可视化(Visual)的常见方法 在 Vue 中实现可视化通常涉及数据可视化库的集成,以下是几种主流方案: 使用 ECharts ECharts 是一个强大的 JavaScript…

vue列表实现

vue列表实现

Vue 列表实现方法 使用 v-for 指令 v-for 是 Vue 中用于渲染列表的核心指令,基于数据源动态生成 DOM 元素。语法格式为 item in items 或 (item, index)…

vue树形实现

vue树形实现

Vue 树形组件实现方法 使用递归组件实现树形结构 递归组件是 Vue 中实现树形结构的常见方法。通过组件调用自身的方式,可以轻松构建多层嵌套的树形结构。 <template> &l…

vue实现返回

vue实现返回

返回按钮功能实现 在Vue中实现返回功能通常有两种方式:使用浏览器历史记录的history.back()或结合Vue Router进行编程式导航。以下是具体实现方法: 使用浏览器API metho…

vue实现换行

vue实现换行

Vue 中实现换行的几种方法 在 Vue 中实现换行可以通过多种方式,具体取决于使用场景和需求。以下是常见的几种方法: 使用 HTML 的 <br> 标签 在模板中直接使用 <b…