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/9/3 8:27:58 阅读更多 →
微博公开数据采集实战:Requests+BeautifulSoup稳定抓取图文视频

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

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

2026/9/3 8:27:58 阅读更多 →
海迅软件层板托孔位调整:从三排到一排的拆单实战指南

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

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

2026/9/3 8:27:58 阅读更多 →

最新新闻

Vue 3组件库打包体积优化:Tree-shaking失效与按需引入实战

Vue 3组件库打包体积优化:Tree-shaking失效与按需引入实战

这次我们来看一个很典型的 Vue 3 打包体积问题:业务项目里只用了组件库 3 个组件,结果打包产物里多出 1.2MB 死代码。这个现象不是组件库本身有问题,而是引用方式、构建配置和 Tree-shaking 是否真正生效共同决定的。很多团队从 Vue 2 Webpa…

2026/9/3 9:06:31 阅读更多 →
Unity与Godot UI架构对比:容器布局、主题资源与工程实践

Unity与Godot UI架构对比:容器布局、主题资源与工程实践

如果你用 Unity 做过几年 UI,心里应该攒了不少“别扭感”。比如界面层级一多,Anchor、Offset、Scale 就开始互相打架;比如一套皮肤想全局换色,要么写一大堆静态配置,要么在预制体里翻半天颜色;比如程序想动…

2026/9/3 9:06:31 阅读更多 →
Python+PyQt5调用百度植物识别API的毕业设计工程实践

Python+PyQt5调用百度植物识别API的毕业设计工程实践

简介:本资源是一套完整的基于Python的植物识别桌面应用毕业设计项目,面向计算机或人工智能方向本科生,解决图像识别类课程设计与毕设中GUI开发、API集成与AI服务调用的实际需求。压缩包共16个文件,含2个核心Python源码&#xff08…

2026/9/3 9:06:31 阅读更多 →
MATLAB实现相移法偏移估计:从原理到代码实战

MATLAB实现相移法偏移估计:从原理到代码实战

简介:本资源是一套面向地球物理勘探专业师生及科研人员的相移法偏移MATLAB实现代码,聚焦地震数据处理中的倾斜界面校正问题,适用于地震成像、速度建模与偏移算法教学实践。压缩包共5个文件,含3个核心.m函数(实现预处理…

2026/9/3 9:06:31 阅读更多 →
ROS2多线激光雷达仿真骨架:Ubuntu22.04+Humble+Fortress全栈验证

ROS2多线激光雷达仿真骨架:Ubuntu22.04+Humble+Fortress全栈验证

简介:本资源是一个面向ROS2初学者与机器人仿真开发者的Gazebo多线激光雷达仿真工程,基于ROS 2 Humble和Ubuntu 22.04平台构建,聚焦于机器人感知模块的快速验证与算法调试,特别适用于SLAM建图、定位导航及传感器融合等场景。压缩包…

2026/9/3 9:06:31 阅读更多 →
Java枚举实战:从字符串常量到业务枚举的完整演进指南

Java枚举实战:从字符串常量到业务枚举的完整演进指南

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

2026/9/3 9:05:30 阅读更多 →

日新闻

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

AI智能体辅助JS逆向:从V8环境搭建到补环境实战

先别急着点开,这不是劝退文,而是想讲清楚一件事:用 AI 做逆向值不值得学?如果要用,怎么搭一套“V8 环境 AI 智能体”来提升效率。最近逆向圈、爬虫圈都在聊 AI Agent、AST 工程逆向、JS 逆向这些词,很多新手…

2026/9/3 0:00:29 阅读更多 →
安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

安卓设备通过修改机型信息解锁游戏高帧率:原理、操作与风险指南

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

2026/9/3 0:00:29 阅读更多 →
ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

ARM版OpenJDK 11安装部署全攻略:下载、配置与避坑指南

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

2026/9/3 0:00:29 阅读更多 →

周新闻

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

备战数据库管理工程师校招:索引、事务、备份恢复核心考点解析

每年校招季我都会接触不少准备数据库方向笔试的同学,看到最多的状态就是:简历上写着“熟悉 MySQL”“了解索引优化”,一碰到数据库管理工程师的笔试卷,却在索引、事务、锁、备份恢复这些题目上翻车。网易这套 2018 校园招聘数据库…

2026/9/3 4:22:22 阅读更多 →
数字电路时序基石:深入理解建立时间与保持时间

数字电路时序基石:深入理解建立时间与保持时间

1. 这不是“背公式”的事:时间参数到底在约束什么你翻过数字电路教材,一定见过这两个词:建立时间(Setup Time)和保持时间(Hold Time)。它们常被并列写在触发器(Flip-Flop&#xff09…

2026/9/3 4:22:01 阅读更多 →
蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

蓝桥杯国赛超声波测距机:从单片机原理到嵌入式系统实战

1. 项目缘起:从赛题到超声波测距机的诞生第八届蓝桥杯单片机设计与开发国赛的题目,我至今记忆犹新。它没有直接给出一个花哨的名字,而是用“超声波测距机”这个朴实无华的功能描述,精准地勾勒出了考核的核心。对于当时备赛的我而言…

2026/9/3 4:22:59 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/3 4:17:49 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/3 4:18:56 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/3 4:21:44 阅读更多 →