当前位置:首页 > 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.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.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

vue 实现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实现页面截屏

使用html2canvas库实现截屏 html2canvas是一个流行的JavaScript库,可以将DOM元素转换为Canvas图像。在Vue项目中安装html2canvas: npm insta…

vue实现自定义登录

vue实现自定义登录

实现自定义登录的基本步骤 在Vue中实现自定义登录功能通常需要结合前端和后端技术。以下是一个基本的实现流程: 创建登录表单组件 使用Vue的单文件组件创建一个登录表单,包含用户名和密码输入框以及提交…

vue实现字母添加排序

vue实现字母添加排序

实现字母添加排序的方法 在Vue中实现字母添加排序功能,可以通过以下步骤完成: 创建Vue实例并定义数据 new Vue({ el: '#app', data: { letters…

vue实现矩阵

vue实现矩阵

Vue 实现矩阵的方法 在 Vue 中实现矩阵操作可以通过多种方式完成,以下是一些常见的方法: 使用二维数组表示矩阵 矩阵可以用二维数组来表示,每个元素对应矩阵中的一个值。在 Vue 的 data…

vue滚动实现

vue滚动实现

Vue 滚动实现方法 使用原生滚动 在 Vue 中可以通过 ref 获取 DOM 元素,调用原生滚动方法实现滚动效果。适用于简单场景。 <template> <div ref=…

vue实现双向

vue实现双向

Vue 实现双向绑定的方法 Vue 的双向绑定主要通过 v-model 指令实现,它结合了数据绑定和事件监听,适用于表单元素(如 input、select、textarea 等)。以下是几种常见的实现…