vue3 v-model自定义修饰符

记录一下开发中用到的v-model修饰符

页面呈现

在这里插入图片描述
在这里插入图片描述

父组件

<div>
      <h1>vue3 v-model自定义修饰符</h1> <br>
    <div>
      父组件中显示的数据: {{title}} 
    </div>
    <br>
    <ModifiersVue type="customize" v-model:title.toupper="title"/>
    <br>
    <!-- v-model简写方式 -->
    <ModifiersVue type="default" v-model.slice="title"/>
  </div>
  <script lang="ts" setup>
		import ModifiersVue from './components/Modifiers.vue';
		import { ref } from 'vue'
		const title = ref('This is the parent component message')
</script>

子组件

<template>
    <div>
       <button v-if="type === 'customize'" @click="changTitle">修改标题为大写</button>
       <button v-if="type === 'default'"  @click="changTitle">截取标题长度</button>
    </div>
</template>
<script lang="ts" setup>

	interface Props {
	    type: string,
	    title?: string,
	    titleModifiers?: { toupper: boolean },
	    // 如果父组件简写成v-model 则props能收到以下参数
	    modelValue?: string,
	    modelModifiers?:  { slice: boolean }
	}
	const props = defineProps<Props>()
	const emit = defineEmits(['update:title', 'update:modelValue'])
	const changTitle = () => {
	    if(props.titleModifiers?.toupper) {
	        emit('update:title' , props?.title?.toUpperCase())
	    }
	    if(props.modelModifiers?.slice) {
	        emit('update:modelValue', props.modelValue?.slice(0, 3))
	    }
	}
</script>

也可以写多个v-model 用法和写一个类似,就不做详细代码贴图

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值