当前位置:首页 > 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 语法。

<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

<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 的方式与普通输入框类似。

vue input实现v model

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

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

标签: vueinput
分享给朋友:

相关文章

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双向…

vue实现sso

vue实现sso

Vue 实现 SSO(单点登录)方案 单点登录(SSO)允许用户通过一次登录访问多个相关系统。以下是基于 Vue 的实现方案: 使用 OAuth2/OpenID Connect 协议 OAuth2…

vue 动画 实现

vue 动画 实现

vue 动画实现方法 Vue 提供了多种方式实现动画效果,主要包括过渡动画和动态动画两类。 使用 <transition> 组件实现基础过渡 通过 Vue 内置的 <transit…

vue实现fadein

vue实现fadein

Vue 实现 FadeIn 效果 在 Vue 中实现淡入(FadeIn)效果可以通过 CSS 过渡、动画或第三方库实现。以下是几种常见方法: 使用 CSS 过渡 通过 Vue 的过渡系统结合 CSS…

vue 实现上传

vue 实现上传

Vue 实现文件上传 使用 Vue 实现文件上传可以通过原生 HTML 的 <input type="file"> 或第三方库(如 axios、vue-upload-component)完…

vue实现webshell

vue实现webshell

Vue 实现 WebShell 使用 Vue 实现 WebShell 需要结合前端与后端的交互,通常通过 WebSocket 或 HTTP 协议与服务器通信。以下是一个基于 Vue 和 WebSock…