v-model

v-model

(1) 在 3.x 中,自定义组件上的默认 v-model 相当于传递了 modelValue prop 并接收子组件抛出的 update:modelValue 事件:

父组件

<template>
    <button @click.prevent="show = !show" class="btn">开关{{show}}</button>
    <child v-model="show"></child>
  </template>
   
  <script setup lang='ts'>
  import child from "./child.vue";
  import {ref} from 'vue'
  const show = ref(false)
  </script>
   
  <style>
  </style>

子组件

<template>
    <div v-if="modelValue" class="dialog">
        <div class="dialog-header">
            <div @click="close">关闭</div>
        </div>
    </div>
</template>

<script setup lang="ts">
interface Props{
    modelValue:boolean,
}

withDefaults(defineProps<Props>(),{
    modelValue:true
})

const emits = defineEmits(['update:modelValue'])

const close = ()=>{
    emits('update:modelValue',false)
}
</script>
(2)自定义 绑定多个v-model

父组件

<template>
    <button @click.prevent="show = !show" class="btn">开关{{show}}----标题:{{title}}</button>
    <child v-model="show" v-model:title="title"></child>
  </template>
   
  <script setup lang='ts'>
  import child from "./child.vue";
  import {ref} from 'vue'
  const show = ref(false)
  const title = ref<string>('父组件标题')
  </script>
   
  <style>
  </style>

子组件

<template>
    <div v-if="modelValue" class="dialog">
        <div class="dialog-header">
            <div class="title">{{title}}</div>
            <div @click="close">关闭</div>
        </div>
    </div>
</template>

<script setup lang="ts">
interface Props{
    modelValue:boolean,
    title?:string
}

withDefaults(defineProps<Props>(),{
    modelValue:true,
    title:"默认标题"
})

const emits = defineEmits(['update:modelValue','update:title'])

const close = ()=>{
    emits('update:modelValue',false)
    emits('update:title','子组件传递过来的title')
}
</script>

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值