当前位置:首页 > VUE

vue input实现v model

2026-02-24 19:08:02VUE

实现 v-model 的基本用法

在 Vue 中,v-model 是用于实现表单元素双向数据绑定的语法糖。对于 <input> 元素,v-model 会自动根据输入类型绑定对应的属性和事件。

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

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

自定义组件实现 v-model

在自定义组件中实现 v-model,需要定义 model 选项或使用 Vue 2.6+ 的 v-model 语法。

vue input实现v model

<template>
  <custom-input v-model="message"></custom-input>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  },
  components: {
    'custom-input': {
      props: ['value'],
      template: `
        <input 
          :value="value"
          @input="$emit('input', $event.target.value)"
        >
      `
    }
  }
}
</script>

Vue 3 中的 v-model 变化

Vue 3 对 v-model 进行了改进,默认使用 modelValue 作为 prop,update:modelValue 作为事件。

<template>
  <custom-input v-model="message"></custom-input>
</template>

<script>
export default {
  data() {
    return {
      message: ''
    }
  },
  components: {
    'custom-input': {
      props: ['modelValue'],
      emits: ['update:modelValue'],
      template: `
        <input 
          :value="modelValue"
          @input="$emit('update:modelValue', $event.target.value)"
        >
      `
    }
  }
}
</script>

修饰符的使用

v-model 支持修饰符来改变默认行为,常见的有 .lazy.number.trim

vue input实现v model

<template>
  <!-- 在 change 事件后同步 -->
  <input v-model.lazy="message">

  <!-- 自动将输入转为数字 -->
  <input v-model.number="age" type="number">

  <!-- 自动去除首尾空格 -->
  <input v-model.trim="text">
</template>

多选输入绑定

对于复选框和单选按钮,v-model 的绑定方式有所不同。

<template>
  <!-- 单个复选框 -->
  <input type="checkbox" v-model="checked">

  <!-- 多个复选框 -->
  <input type="checkbox" value="A" v-model="checkedItems">
  <input type="checkbox" value="B" v-model="checkedItems">

  <!-- 单选按钮 -->
  <input type="radio" value="One" v-model="picked">
  <input type="radio" value="Two" v-model="picked">
</template>

<script>
export default {
  data() {
    return {
      checked: false,
      checkedItems: [],
      picked: ''
    }
  }
}
</script>

文本域绑定

<textarea> 元素使用 v-model 的方式与普通输入框类似。

<template>
  <textarea v-model="message" placeholder="请输入多行文本"></textarea>
</template>

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

标签: vueinput
分享给朋友:

相关文章

vue路由实现内部切换

vue路由实现内部切换

Vue 路由实现内部切换的方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-li…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以使…

antd vue 实现

antd vue 实现

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

vue实现遮罩

vue实现遮罩

Vue 实现遮罩层的方法 在 Vue 中实现遮罩层可以通过多种方式完成,以下是几种常见的方法: 方法一:使用 v-show 或 v-if 控制显示 通过 Vue 的指令动态控制遮罩层的显示与隐…

vue实现token

vue实现token

Vue 中实现 Token 认证的方法 在 Vue 中实现 Token 认证通常涉及前端与后端的交互,包括 Token 的获取、存储、发送和刷新等操作。以下是具体实现步骤: 获取 Token 用户登…

vue实现骰子

vue实现骰子

Vue 实现骰子功能 创建 Vue 组件 在 Vue 项目中创建一个骰子组件,例如 Dice.vue。该组件包含骰子的外观和逻辑。 <template> <div class=…