发布时间:2026/9/3 8:27:37
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

相关新闻

2026/9/3 8:27:37

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

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

2026/9/3 8:22:36

高通CamX相机框架源码解析:从架构设计到开发调试实战

简介:本资源为高通Camera Camx架构官方级源码仓库完整镜像,面向Android系统工程师、相机算法开发者及嵌入式图像处理研究人员,用于深度理解骁龙平台相机HAL层设计、图像流水线调度与硬件协同机制。压缩包含763个文件,主体为358个头…

2026/9/3 8:22:36

生存战争2.4幸运四叶草获取路线与效果验证指南

/* 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:42:42

基于STM32与Proteus的超声波测距测温仿真系统设计与实现

简介:本资源是一套面向嵌入式初学者与STM32进阶学习者的完整仿真项目实践包,聚焦超声波测距与数字温度测量双功能融合开发,解决传感器驱动、多外设协同及LCD实时显示等典型嵌入式系统工程问题。资源共244个文件,涵盖65个C语言源码…

2026/9/3 8:42:42

OpenCV车道线检测实战:从原理到高鲁棒性工程实现

简介:本资源是一份面向高校计算机视觉、数字图像处理或智能驾驶相关课程的高分课程设计项目,聚焦基于Python与OpenCV的车道线检测算法实现,适用于本科生课程作业、期末大作业及入门级图像处理实践。压缩包共4个文件,含2个核心Pyth…

2026/9/3 8:42:42

Kimi K3集成Perplexity平台:轻量化AI助手开发实战指南

/* 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:42:42

Azure AI Search(1)

Demo作用 写了一个小demo,用来理解Azure Search,跑起来是这样的,用户提问,给出具体代码和gif的效果,代码放这里了 https://github.com/YeMengHua417/Q-A,也全是Copilot的功劳 流程及架构 用到了Azure sea…

2026/9/3 8:42:42

终极指南:如何在Mac上发现和安装689款免费开源应用

终极指南:如何在Mac上发现和安装689款免费开源应用 你是否厌倦了在Mac上寻找优质应用却总是遇到付费墙?想要提升工作效率却不想花费大量资金购买软件?今天我要为你介绍一个宝藏资源:open-source-mac-os-apps项目。这是一个精心整…

2026/9/3 8:37:39

一分钟搞懂指令式 vs 函数式

两者是两种不同的编程思维范式,核心区别:怎么描述“做事”。 一、指令式(Imperative) 核心:告诉计算机「一步步做什么」 关注过程、步骤、状态变化,像写操作手册。 特点:强调顺序、循环、条件、变量修改 代表语言:C、Java、Python(主流写法)、Go、JavaScript(传统…

2026/9/1 16:02:17

vSound小提琴数字处理器实操指南:从接线到演出的完整配置

电小提琴或者原声小提琴插电演出,第一个绕不开的坎就是声音难听。原声琴的共鸣和空气感一旦进了拾音器,出来的往往是一坨干瘪、发尖、带着奇怪塑料味的信号。我当初第一次把琴接上乐队调音台,直接被主唱吐槽"你这声音像在锯钢丝"。…

2026/9/2 9:00:32

传感器接口IC如何攻克生物化学传感的微弱信号难题?

1. 从电极到比特流:为什么生物化学传感必须依赖专用接口IC 做生物化学传感的人都有过类似的经历:明明传感器本身性能很好,信号输出却一塌糊涂——噪声大、漂移明显、重复性差,怎么调都达不到预期。很多时候问题并不在传感器&#…

2026/9/2 8:41:06

STM32F411CEU6多通道ADC采集:扫描模式+DMA实现详解

1. 多通道 ADC 的用武之地把“Multichannel ADC”和“STM32F411CEU6”这两个关键字放在一起,其实就是嵌入式开发里最常遇到的一类需求:用一块不算贵的 MCU,同时采集多路模拟信号。STM32F411CEU6 是 48 引脚的 Cortex-M4F 主控,主频…

2026/9/3 0:02:06

零基础装 OpenClaw 小龙虾 AI:Windows 一键部署教程与避坑要点

Windows 部署 OpenClaw 完整教程|本地 AI 智能体 5 分钟落地,环境配置一次搞定 版本说明:Windows 3.1.0 / Mac 2.7.9 写在前面 近两年开源 AI 领域有一款被称作「数字员工」的工具持续走热,它就是 OpenClaw,圈内人更习…

2026/9/3 0:02:06

Hermes Agent 本地部署新方案:Windows 整合包减少依赖报错

Windows 本地部署 Hermes 太麻烦?这版一键包 5 分钟快速跑通 很多人想体验 Hermes Agent,但真正开始部署时,往往会卡在环境配置这一步。 需要安装各类依赖、调试运行环境、处理路径问题,还容易遇到命令行报错、系统拦截、文件缺…

2026/9/3 0:02:06

实测 OpenClaw 一键包,5 分钟完成本地自动化环境搭建

OpenClaw 本地 AI 自动化工具部署指南|使用一键包规避环境配置难题 痛点:部署 AI 自动化工具常常要处理 Python、Node.js 各类依赖,版本冲突、环境配置耗费大量时间,OpenClaw 提供一键安装包,降低部署门槛。 适配系统&…

2026/9/2 1:15:22

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/2 1:15:22

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/2 1:15:20

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…