当前位置:首页 > VUE

vue v-model实现

2026-02-20 19:36:11VUE

v-model 的基本用法

在 Vue 中,v-model 是一个语法糖,用于在表单元素和组件上实现双向数据绑定。它自动将表单输入的值与 Vue 实例的数据属性同步。

表单元素示例

<input v-model="message" placeholder="输入内容">
<p>输入的值:{{ message }}</p>
data() {
  return {
    message: ''
  }
}
  • v-model 默认绑定到 value 属性(如 inputtextarea)或 checked 属性(如 checkboxradio)。
  • 用户输入会实时更新 message,反之修改 message 也会更新输入框的值。

v-model 的修饰符

Vue 提供了一些修饰符来扩展 v-model 的行为:

  1. .lazy
    将输入事件从 input 改为 change,即仅在失去焦点时同步数据:

    <input v-model.lazy="message">
  2. .number
    自动将输入值转为数字类型:

    <input v-model.number="age" type="number">
  3. .trim
    自动去除输入内容的首尾空格:

    <input v-model.trim="text">

在组件中使用 v-model

在自定义组件中,v-model 默认通过 props 和自定义事件实现:

  1. 父组件

    <CustomInput v-model="inputValue" />
  2. 子组件

    <input 
      :value="modelValue" 
      @input="$emit('update:modelValue', $event.target.value)"
    >
    props: ['modelValue'],
    emits: ['update:modelValue']
  • 默认情况下,v-model 绑定到 modelValue 属性和 update:modelValue 事件。
  • 可以通过 v-model:arg 指定自定义参数(Vue 3+):
    <CustomInput v-model:title="pageTitle" />

多选框和单选按钮的绑定

  • 多选框(单个)

    <input type="checkbox" v-model="isChecked">

    绑定到布尔值。

  • 多选框(多个)

    <input type="checkbox" v-model="selectedItems" value="A">
    <input type="checkbox" v-model="selectedItems" value="B">

    绑定到数组 selectedItems,值为 ['A', 'B']

  • 单选按钮

    <input type="radio" v-model="picked" value="One">
    <input type="radio" v-model="picked" value="Two">

    绑定到字符串 picked

下拉选择框的绑定

<select v-model="selectedOption">
  <option value="a">选项A</option>
  <option value="b">选项B</option>
</select>
  • 单选时绑定到字符串 selectedOption
  • 添加 multiple 属性可绑定到数组:
    <select v-model="selectedOptions" multiple>

自定义组件的深层绑定

通过 computedget/set 实现复杂逻辑:

vue v-model实现

computed: {
  fullName: {
    get() {
      return `${this.firstName} ${this.lastName}`;
    },
    set(value) {
      const [first, last] = value.split(' ');
      this.firstName = first;
      this.lastName = last;
    }
  }
}
<CustomInput v-model="fullName" />

标签: vuemodel
分享给朋友:

相关文章

实现vue模版

实现vue模版

Vue 模板的基本结构 Vue 模板基于 HTML 语法,通过 Vue 的指令和插值实现动态渲染。以下是一个基础模板示例: <template> <div id="…

antd vue 实现

antd vue 实现

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

实现简易vue

实现简易vue

实现简易 Vue 的核心思路 Vue 的核心功能包括数据响应式、模板编译和虚拟 DOM。以下是一个简易实现方案,涵盖核心功能模块。 数据响应式系统 通过 Object.defineProperty…

vue实现抖动

vue实现抖动

Vue 实现抖动效果 在 Vue 中实现抖动效果可以通过 CSS 动画或 JavaScript 动画库来实现。以下是几种常见的方法: 使用 CSS 动画 通过定义 @keyframes 动画并在 V…

vue实现分步

vue实现分步

Vue 实现分步功能 在 Vue 中实现分步功能可以通过多种方式完成,以下是几种常见的方法: 使用动态组件 通过动态组件切换不同的步骤内容,结合 v-if 或 component 标签实现分步逻辑。…

vue实现layout

vue实现layout

Vue 实现 Layout 布局的方法 在 Vue 中实现 Layout 布局通常涉及路由嵌套、组件化设计和动态渲染。以下是几种常见的实现方式: 使用嵌套路由 通过 Vue Router 的嵌套路由…