vue3自定义多个v-model以及自定义修饰符

从 Vue 3.4 开始,推荐的实现方式是使用 defineModel() 宏:

废话不多说,直接上代码

javascript 复制代码
<!-- Son.vue -->
<script setup>
const model = defineModel()
</script>

<template>
  <span>My input</span> <input v-model="model">
</template>

<!-- Parent.vue -->
<script setup>
import Child from './Child.vue'
import { ref } from 'vue'

const msg = ref('Hello World!')
</script>

<template>
  <h1>{{ msg }}</h1>
  <Child v-model="msg" />
</template>

多个v-model

javascript 复制代码
<!-- Parent.vue -->
<UserName
  v-model:first-name1="first"
  v-model:last-name1="last"
/>
<!-- Son.vue -->
<script setup>
const firstName = defineModel('firstName1')  //这里的参数就是父组件v-model后面的值
const lastName = defineModel('lastName1')
</script>

<template>
  <input type="text" v-model="firstName" />
  <input type="text" v-model="lastName" />
</template>

处理 自定义v-model 修饰符

javascript 复制代码
<!-- Parent.vue -->
<MyComponent v-model.capitalize="myText" />

<!-- Son.vue -->
<script setup>
const [model, modifiers] = defineModel({
  set(value) {
    if (modifiers.capitalize) {
      return value.charAt(0).toUpperCase() + value.slice(1)
    }
    return value
  }
})
</script>

<template>
  <input type="text" v-model="model" />
</template>

vue3官方文档

相关推荐
天天进步201517 小时前
CSS Grid与Flexbox:2025年响应式布局终极指南
前端·css
Boop_wu17 小时前
[Java EE] 计算机基础
java·服务器·前端
Novlan118 小时前
TDesign UniApp 组件库来了
前端
用户479492835691518 小时前
React DevTools 组件名乱码?揭秘从开发到生产的代码变形记
前端·react.js
顾安r18 小时前
11.8 脚本网页 打砖块max
服务器·前端·html·css3
倚栏听风雨19 小时前
typescript 方法前面加* 是什么意思
前端
狮子不白19 小时前
C#WEB 防重复提交控制
开发语言·前端·程序人生·c#
菜鸟‍19 小时前
【前端学习】阿里前端面试题
前端·javascript·学习
Jonathan Star19 小时前
LangFlow前端源码深度解析:核心模块与关键实现
前端