当前位置: 首页 > news >正文

vue3 抽取el-drawer子组件

vue3 抽取el-drawer子组件

  • MyDrawer.vue
<template><el-drawerv-model="isOpen":title="title"width="30%":before-close="handleBeforeClose"@close="handleClose"><!-- 抽屉内容 --><!-- 底部 --><template #footer><slot name="footer"><el-button @click="handleCancel">取消</el-button><el-button type="primary" @click="handleConfirm">确定</el-button></slot></template></el-drawer>
</template><script setup>
import { defineProps, defineEmits, watch } from 'vue';// 定义接收的 props
const props = defineProps({// 控制抽屉显示/隐藏(v-model 绑定)modelValue: {type: Boolean,default: false},// 抽屉标题title: {type: String,default: '抽屉'}
});// 定义触发的事件
const emit = defineEmits(['update:modelValue', // 用于 v-model 双向绑定'close', // 抽屉关闭时触发'confirm', // 点击确定按钮时触发'cancel' // 点击取消按钮时触发
]);// 内部维护的显示状态(避免直接修改 props)
const isOpen = ref(props.modelValue);watch(() => props.modelValue,(newVal) => {isOpen.value = newVal;}
);// 关闭抽屉(更新父组件状态)
const closeDrawer = () => {emit('update:modelValue', false);
};const handleBeforeClose = (done) => {if (props.beforeClose) {props.beforeClose(done);} else {done(); }
};const handleClose = () => {emit('close');
};const handleCancel = () => {emit('cancel');closeDrawer();
};const handleConfirm = () => {emit('confirm');closeDrawer();
};
</script>
  • 使用
<MyDrawer v-model="openDrawer" title="详情" @confirm="handleDrawerConfirm" @cancel="handleDrawerCancel" @close="handleDrawerClose" />
http://www.dtcms.com/a/566490.html

相关文章:

  • 杭州专业网站建设佛山cms模板建站
  • TCP可靠传输的秘密:从滑动窗口到拥塞控制
  • 宝塔做网站安全吗做网站龙华
  • safetensors转为gguf,并在ollama中部署
  • 做二手车按揭的网站艺术培训机构
  • 如何给网站做右侧导航互联网网络推广公司
  • 公司网站优化推广宁波企业名称查询网站
  • 做淘宝客网站服务器高新网站建设
  • Mysql 读书笔记
  • 网上做任务佣金高的网站wordpress付费浏览
  • Flutter---卡片交换器
  • MAC-SQL 算法一
  • 大连爱得科技网站建设公司怎么样在线设计平台都有哪些比较好用的
  • 【2051】【例3.1】偶数
  • 北京网站开发外包做网站看什么书
  • 怎么做网站推广临沂世界网站
  • C# 使用XML文件保存配方数据
  • 小说网站自主建设网站域名申请
  • 西安谁家的集团门户网站建设比较好上海公司车牌
  • Spring配置数据源
  • Product Hunt 每日热榜 | 2025-11-02
  • 基于图像的三维重建
  • 越秀区做网站河南网站建设价格与方案
  • 什么网站的新闻做参考文献中信建设有限责任公司属于央企吗
  • 硬件工程师-基础知识(一)
  • 都匀经济开发区建设局网站无锡电子商务网站制作
  • html5 input[type=date]如何让日期中的年/月/日改成英文
  • 嘉兴城乡建设局网站株洲seo优化哪家好
  • 【开题答辩全过程】以 法律类教辅平台为例,包含答辩的问题和答案
  • 商务网站建设哪家好免费聊天不充值软件