当前位置:   article > 正文

vue3之弹窗,抽屉二次封装 v-model=“visible” 踩坑_v-model:visible

v-model:visible

功能:

 

问题描述:

当二次封装弹窗或者抽屉时,从父组件传visible给子组件时,子组件用v-model接收控制显示,控制台会报错

解决:

 父组件在调用抽屉组件,给抽屉组件传控制显示的值时写法 v-model:visible

  1. <!-- 抽屉 v-model:要传值的key-->
  2. <view-drawer v-model:visible="visible">
  3. <div>
  4. <detail @exposeData="exposeData" ref="details" :count="count"></detail>
  5. <!-- <detail ref="details" :count="count"></detail> -->
  6. </div>
  7. </view-drawer>

子组件(抽屉组件)在使用父组件传过来控制显示的值时 不能使用 v-model了 要用:model-value来双向绑定

  1. <template>
  2. <el-drawer size="40%" :model-value="visible" :show-close="false">
  3. <template #header="{ close}">
  4. <div class="drawer-close-btn" @click="dialogShow">
  5. <el-icon><Close /></el-icon>
  6. </div>
  7. </template>
  8. <el-scrollbar>
  9. <div class="drawer-content-wrap">
  10. <slot></slot>
  11. </div>
  12. </el-scrollbar>
  13. <template #footer>
  14. <div class="drawer-footer-btn">
  15. <el-button>
  16. {{btn1}}
  17. </el-button>
  18. <el-button type="info">
  19. {{btn2}}
  20. </el-button>
  21. </div>
  22. </template>
  23. </el-drawer>
  24. <script setup>
  25. import {Close} from '@element-plus/icons-vue'
  26. import {toRefs,ref,computed} from 'vue'
  27. const props = defineProps({
  28. visible: {
  29. type:Boolean,
  30. default:true
  31. },
  32. btn1: {
  33. type:String,
  34. default:'取消'
  35. },
  36. btn2: {
  37. type:String,
  38. default:'自定义'
  39. }
  40. })
  41. const emit = defineEmits(['update:visible'])
  42. //组件自己关闭修改父组件传来的值
  43. const dialogShow =()=>{
  44. emit('update:visible', false)
  45. }
  46. </script>

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/79357
推荐阅读
相关标签
  

闽ICP备14008679号