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官方文档

相关推荐
moMo10 小时前
JavaScript 变量提升,执行上下文里的各种门道
javascript·面试
weixin_4713830310 小时前
由浅入深递归练习
前端·javascript·vue.js
tedcloud12310 小时前
ai-engineering-from-scratch部署教程:从零搭建AI应用环境
服务器·前端·人工智能·系统架构·edge
Kurisu57511 小时前
全面战争:战锤3修改器下载2026最新
前端
丷丩11 小时前
MapLibre GL JS第21课:绘制GeoJSON点图标、注记
前端·javascript·gis·mapbox·maplibre gl js
LCG元11 小时前
现代Web应用高可用架构设计与性能调优实战
前端·wpf
丷丩11 小时前
MapLibre GL JS第20课:更新GeoJSON多边形
前端·javascript·gis·mapbox·maplibre gl js
swipe11 小时前
DeepAgents middleware 工程实战:把复杂 Agent 的运行时基建交给可组合中间件
前端·面试·llm
丷丩11 小时前
MapLibre GL JS第33课:渲染世界副本
javascript·gis·map·mapbox·maplibre gl js
前端环境观察室11 小时前
别让 Agent 浏览器任务无限重试:失败分类、RetryPolicy 与人工复核
前端