dialog封装
通用封装弹窗 / 自定义组件模板可套用// 子组件templateel-dialog v-modelinnerFlagtitle弹窗// 业务内容template #footerspanclassel-button clickstate.peopleDialogShow false取消/el-buttonel-button typeprimaryclickconfirm确定/el-button/span/template/el-dialog/templatescript setupimport{computed}fromvue// 1. 定义接收的开关参数constpropsdefineProps([show])// 2. 定义更新事件 业务事件constemitdefineEmits([update:show,confirmSelect])// 封装双向绑定constinnerFlagcomputed({get(){returnprops.show},set(val){emit(update:show,val)}})// 业务操作抛出数据constconfirm(){emit(confirmSelect,选中的数据)}/script// 父组件CustomDialog v-model:showisDialogShowconfirmSelectgetData/script setupconstisDialogShowref(false)constgetData(res){console.log(子组件传回数据,res)isDialogShow.valuefalse}/script业务示例templateel-dialogv-modelinnerVisibletitle组件Libraryv-ifinnerVisiblewidth90%stylemargin-top:4%divclasscomBoxdivclassxxBoxclickselectComp(msg)XxCom/XxCom/divdivclassrwBoxclickselectComp(task)RwCom/RwCom/divdivclasschartBoxclickselectComp(chart)BarChartrefbarChartsChild/BarChart/div/div/el-dialog/templatescriptsetupimport{ref,onMounted,reactive,computed,}fromvueimportXxComfrom/components/text/xx.vueimportRwComfrom/components/text/rw.vueimportBarChartfrom/components/chart/barChart.vueconstemitdefineEmits([select,update:comDialogShow])constpropsdefineProps([comDialogShow])constinnerVisiblecomputed({get(){returnprops.comDialogShow},//父组件传进来的弹窗显示状态set(val){emit(update:comDialogShow,val)}//通知父组件更新变量})// 自定义业务事件 把用户选中的组件标识 传给父页面constselectComp(key){emit(select,key)}onMounted((){})/scriptstylelangscssscoped//dialog 相关样式 .comBox{display:flex;flex-wrap:wrap;gap:12px;/* 模块间距按需调整 */width:100%;height:100%;overflow:auto;.xxBox, .rwBox, .chartBox, .zbBox{width:24.4%;height:36%;background:#f5f7fa;border-radius:8px;padding:12px;overflow-y:auto;/* 内容超出时滚动 */}}/style主页面引入templateComponentLibDialogv-model:comDialogShowstate.dialogVisibleselectselectCompHandle//templatescriptsetupconststatereactive({dialogVisible:false,})// 自定义事件弹窗选中组件赋值给对应模块constselectCompHandle(compKey){// 给当前操作模块赋值moduleData[activeModuleId].keycompKey// 关闭弹窗state.dialogVisiblefalse}/script详解 v-model:visible 和 select 分别是什么、为什么这么写Vue3 组件自定义双向绑定规范v-model:xxx变量 等价于 :xxx变量 update:xxx新值 变量 新值v-model:comDialogShow“dialogVisible” —— Vue3 多参数 v-model 语法规则绑定参数名 xxx更新事件必须固定叫 update:xxx这是 Vue 语法约定不能随便改事件名。// 弹窗组件里定义了constemitdefineEmits([select,update:comDialogShow])constpropsdefineProps([comDialogShow])constinnerVisiblecomputed({get(){returnprops.comDialogShow},//父组件传进来的弹窗显示状态set(val){emit(update:comDialogShow,val)}//通知父组件更新变量})// 父组件对应写法两种写法完全等价//写法1. 简写推荐ComponentLibDialog v-model:comDialogShowdialogVisible///写法2. 完整展开写法更好理解底层ComponentLibDialog:comDialogShowdialogVisibleupdate:comDialogShowval dialogVisible val///能不能换名字完全可以举例子//比如不想用 visible改用 open//1.子组件改 props、emit 名称constpropsdefineProps([open])constemitdefineEmits([update:open])constinnerOpencomputed({get(){returnprops.open},set(val){emit(update:open,val)}})//2.父组件同步改成ComponentLibDialog v-model:opendialogVisible/select“selectCompHandle” —— 自定义业务事件子组件触发 emit(‘select’, 参数)第一个参数是事件名后面是要传给父页面的数据// 弹窗需要把 用户选中的组件标识msg/task/chart传给父页面所以自定义事件 select// 选中组件时抛出keyconstselectComp(key){emit(select,key)}父组件接收 select“selectCompHandle”constselectCompHandle(compKey){if(!activeModuleId)return// 给当前操作模块赋值组件moduleData[activeModuleId].keycompKey// 关闭弹窗state.comDialogShowfalse}事件名可以随便自定义没有强制约束比如你想叫 chooseComponent、pick 都没问题子组件emit(‘chooseComponent’, compKey)父组件chooseComponent“handleSelectComp”举个对比示例换一套名字演示。功能完全不变只是参数和事件名换了。//子组件constpropsdefineProps([open])constemitdefineEmits([update:open,pickComponent])constinnerOpencomputed({get(){returnprops.open},set(val){emit(update:open,val)}})consthandleSelect(key){emit(pickComponent,key)innerOpen.valuefalse}//父组件ComponentSelectDialog v-model:opendialogVisiblepickComponenthandleSelectComp/总结两类事件的区别类型语法规则作用命名约束v-model:xxx 双向绑定事件固定 update:xxx同步开关类状态弹窗显隐、开关、输入框值更新事件名不能自定义必须 update:xxx自定义业务事件 xxx事件名完全自定义传递业务数据选中项、提交、删除、点击随便起名见名知意即可使用场景什么时候用 v-model:xxx什么时候用自定义事件1.控制开关、输入值、显隐这类双向同步状态 → 用 v-model:xxx2.点击选择、提交、删除、获取业务数据这类单向回调传参 → 自定义事件 xxx

相关新闻

5款免费macOS系统优化工具:让你的Mac重获新生

5款免费macOS系统优化工具:让你的Mac重获新生

5款免费macOS系统优化工具:让你的Mac重获新生 你是否发现自己的Mac变得越来越慢?存储空间总是不够用?别担心,这几乎是每个Mac用户都会遇到的问题。随着使用时间的增长,系统会积累大量缓存文件、日志和临时数据&#x…

2026/11/3 3:16:25 阅读更多 →
微博公开数据采集实战:Requests+BeautifulSoup稳定抓取图文视频

微博公开数据采集实战:Requests+BeautifulSoup稳定抓取图文视频

简介:这是一份面向Python初学者与数据采集实践者的新浪微博爬虫实战模板,解决社交媒体公开数据批量获取与多媒体资源下载的典型需求。资源包含14个文件,以6个核心Python脚本(如weibo.py、 main .py、util工具模块)为…

2026/10/31 7:23:33 阅读更多 →
海迅软件层板托孔位调整:从三排到一排的拆单实战指南

海迅软件层板托孔位调整:从三排到一排的拆单实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/11 23:56:27 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/13 5:13:25 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/13 5:13:25 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/13 5:13:25 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/13 5:13:25 阅读更多 →

日新闻

周新闻

月新闻