解决el-dialog弹框多重嵌套,实现最好用的el-dialog

西门子828D/840DSL数控机床产量数据采集实战:手把手教你绕过授权限制(附Demo源码) 本文详细介绍了西门子828D/840DSL数控机床产量数据采集的实战技术,包括绕过授权限制的替代方案和实现方法。通过分析通信协议、配置参数和数据处理,提供了一套高效且合规的数据采集解决方案,并附有Demo源码,帮助技术人员快速上手。 阅读详情

解决el-dialog弹框多重嵌套的问题。实现最好用的el-dialog

      随着vueJs的广泛使用,Element组件逐渐深入人心。但是在使用element组件的时候,难免会遇到一些问题。本文跟大家分享:如何解决el-dialog弹框的多重嵌套问题,实现最好用的私人dialog,当然‘最’可能有点吹流弊啦,用的好请点赞!。
      使用过el-dialog的小伙伴,应该都发现了:el-dialog不好用。 为什么不好用?
      1.弹框不支持嵌套
       2.多个弹框之间遮罩层会相互影响
      但是在我们实际使用的过程中,又经常会有嵌套弹框的需求。虽然按照饿了么提供的不嵌套解决方式(把弹框都平级堆在一起),再通过事件发送和监听等方式来也能绕开这些问题,但是这样下来你会发现:1.多级弹框调用之间需要发送很多事件,弹框相互调用变得很复杂 2.页面多了很多非业务逻辑控制代码(可读性变差) 3.遮罩层变得越来越黑。 4.弹框的可重用性变得很差 。比如弹框一里面打开弹框二,控制代码却要写到弹框一的父页面,这是不是有种隔墙挠痒的感觉!
      那么怎样的弹框才是合理的呢,废话不多说先放代码:

    add(){
            let option = {
                title: '添加项目',
                component: Add,
                _size_: 'small',
                data: {action: 'add'},
                callback(result){
                    this.loadList();
                }
            };
            common.dialog(option);
        }

      上面是打开弹框的代码,有没有感觉很简单。 在任何地方我们只要调用add()方法,就会打开内容为Add组件的弹框。我们只需要指定弹框的基本属性:标题title、内容data、大小size、传值。以及有时关闭弹框需要执行的回调函数(比如刷新列表啥的)。这样不仅实现了弹框和弹框体的解耦,而且完美的解决了:弹框嵌套以及遮罩相互影响问题。
下面揭露common.dialog()的神秘面纱,具体代码如下

common.dialog = function (option) {
    //dom为解决弹框嵌套以及弹框相互影响的核心
    var dom = document.createElement('div');
    document.getElementsByTagName('body')[0].appendChild(dom);
    var component = option.component;
    let template = '<div v-if="show"><el-dialog  :title="title" v-model="show" :before-close="handleClose" :size="size" @close="close"><child v-on:callback="callback" :init_data="data"> \
        </child></el-dialog></div>';
    var v = new Vue({
          el: dom,
          data: function () {
              return {
                  title: option.title,
                  size: option._size_ == null ? 'small' : option._size_,
                  modal: true,
                  close_on_press_escape: false,
                  show_close: true,
                  show: true,
                  data: option.data,
                };
            },
          template: template,
          mounted: function () {},
          methods: {
              handleClose(done){
                if (option.close) {
                  option.close();
                }
                done();
              },
              close() {
                if (option.close) {
                  option.close();
                }
              },
              callback(result) {
                if (!result.type || result.type == 'close' || result.type == 'cancel') {
                  this.show = false;
                } else if (result.type == 'sure') {
                  this.show = false;
                  if (option.callback) {
                    option.callback(result.data);
                  }
                }
              },
            },
          components: {
              child: option.component,
            },
        });
    return v;
  };

以上是common.dialog()的核心代码,可以直接使用。需要注意的是:

  1. 弹框内容的组件通过props:[“init_data”]接收option.data里面的值。
  2. 弹框内容组件如果需要调用关闭弹框方法
    1) 只是关闭弹框,不执行回调(相当于点击‘取消’按钮)

    this.$emit(“callback”,{type:'cancel'})
    2)关闭弹框并执行回调(相当于点击’保存’按钮)

    this.$emit(“callback”,{type:'sure',data:val });//其中val回调函数的参数

    3)点击弹框右上侧的X按钮,又想执行回调函数。只需在option里面定义option.close函数即可

    上面是common.dialog()的部分代码,基本解决了el-dialog存在的问题。

    经部分网友建议,现提供完整代码以及使用样例。CommonDialog 样例代码可直接使用

到底什么是Harness工程?一篇文章从入门到企业落地全解析 随着OpenClaw爆火,Harness Engineering(驾驭工程)成为AI编程时代的热门概念,很多小白对其感到陌生。本文用通俗类比和真实案例,避开复杂术语,从基础定义入手,讲清Harness Engineering的核心逻辑——人类工程师设计“约束系统”(马具),让AI模型(烈马)安全高效地完成代码工作,同时拆解其核心组件、企业落地场景和实战成果,帮小白快速入门,读懂这项能解放人力、提升效率的新技术,轻松掌握它的核心价值和落地思路。 阅读详情

相关推荐

Ansys Zemax与Speos协同设计:从HUD光学优化到驾驶环境可视化全流程解析

本文深入解析了如何利用Ansys Zemax与Speos进行协同设计,实现从HUD光学系统核心优化到驾驶环境可视化验证的全流程。文章强调了HUD设计是光学性能与视觉感知的深度耦合,通过Zemax进行精密光学设计,再利用Speos进行系统级仿真与感知模拟,最终完成从虚拟到现实的闭环验证,有效提升HUD产品的开发效率与可靠性。

weixin_29199873的博客 242

el-dialog嵌套的影响、原因及解决方法

用Dialog嵌套Dialog所踩过的坑

卡卡的博客 1万+

微软Media Creation Tool 创建工具 1.3 升级:支持全新下载安装Win11 22H2 Build 22621.525

微软 Media Creation Tool 创建工具 1.3 升级:支持全新下载安装 Win11 22H2 Build 22621.525 ISO 镜像,如果今天运行使用 Media Creation Tool,则会下载 Windows 11 2022 版本 Build 22621.525,它不会向操作系统添加任何新内容,但会修复安装问题,下面来看看详细的更新内容。

zym0218的博客 4230

el-dialog嵌套使用

最近使用vue+elementUI做项目,使用过程中很多地方会用到dialog这个组件,有好几个地方用到了dialog的嵌套,刚开始使用不是很熟练,也是走了很多小弯路,现在总结一下自己使用的一些小问题。 1.dialog嵌套时, ...

qq_44860613的博客 1万+

做形态学方法的团队_“设计形态学”与“第三自然”

文/邱松(清华大学 美术学院)摘要:“设计形态学”是基于“形态学”研究的设计基础学科。“形态”既是该学科研究的主体,又是与其它学科相连接的“纽带”。实际上,不管是供养我们的地球家园,还是神秘莫测的浩瀚宇宙,均由数量纷繁、千姿百态的“形态”构筑而成。形态通常被分成两大类:一类是源于“第一自然”的“自然形态”;另一类是来自“第二自然”的“人造形态”。而这两类形态正是“设计形态学”研究的两条...

weixin_31548723的博客 2683

OneNET物联网平台实战:从零搭建到双向数据通信测试

本文提供了一份详细的OneNET物联网平台实战指南,从零开始讲解平台搭建与设备创建,并重点演示了如何通过MQTT协议实现设备数据上报与云端命令下发的双向数据通信测试。通过模拟设备连接与数据交互,帮助开发者快速理解物联网核心通信流程。

weixin_29306571的博客 350

前端在el-dialog中嵌套多个el-dialog

前端在el-dialog中嵌套多个el-dialog

m0_50298323的博客 3658

带有HSE组件的S32系列芯片中各子系统如何依次启动?

仔细阐述了上电后各个子系统的启动顺序,并给出了详细的启动步骤流程图。

车载系统攻城狮 1701

el-dialog嵌套问题,第二个弹窗会被遮住的解决办法

el-dialog嵌套问题,第二个弹窗会被遮住的解决办法

博哥的二进制世界 6402

074.多任务学习:在YOLO基础上同时进行分割、关键点检测

本文探讨了在YOLOv5模型中实现检测、分割和关键点多任务的技术方案。通过分层特征抽取策略(检测用深层、分割用浅深融合、关键点用中层)解决特征共享问题;采用不确定性加权方法自动平衡多任务损失;设计了支持三种标签的数据流处理方式;并分享了推理部署时的后处理技巧。实践表明,合理的多任务设计可以提升主任务性能,但需权衡标注成本和推理效率。最终方案选择在训练时引入分割作为辅助任务,推理时仅保留检测和关键点,实现了检测mAP提升2.3%的优化效果。

2603_95664987的博客 44

C#构建高精度预测模型:从数据预处理到模型部署的实战指南

【代码】C#构建高精度预测模型:从数据预处理到模型部署的实战指南。

墨夶的博客 1261

vue el-dialog 实现弹窗无限嵌套(点击弹窗弹出新的弹窗,可以一直点击)

创建文件夹 testDialog 文件夹 根据自己需要创建文件夹(这个是我用于演示的,根据自己项目自行创建就可以)要求点击数据展示弹窗,弹窗中数据点击显示新的弹窗,里面的弹窗还可以继续点击新的弹窗,可以无限制的嵌套弹窗。剩下两个文件按照这个自行创建即可 想无限制循环 最后一个文件的弹窗写到第一个 就可以无限制嵌套!原因:因为有些弹窗既是父弹窗又是子弹窗,所以使用的时候会报错,报一个循环嵌套错误。可以一直无限制的点击 无限制的嵌套。commonData.js 文件。

记录常见的问题以及解决办法 1万+

从菜鸟到大神:VSCode助力HTML开发全攻略

本文全面介绍 VSCode 在 HTML 开发中的高效应用。先引导读者完成 VSCode 的安装与个性化设置,助其快速适应开发环境;接着推荐 Live Server、Prettier 等实用插件,实现实时预览、代码格式化等功能,提升开发效率。通过详细的开发实战步骤,从新建文件到添加样式,带领读者掌握 HTML 基础结构与常用标签使用。还分享代码片段管理、多人协作等进阶技巧,解决常见开发问题。旨在帮助开发者利用 VSCode,轻松高效完成 HTML 开发,打造优质网页。

邓邓子的博客 3364

Element UI弹窗居中的‘坑’我帮你踩完了:从CSS原理到Vue3深度选择器实战

本文深入探讨了Element UI弹窗组件el-dialog的垂直居中问题,从CSS布局原理到Vue2/Vue3的深度选择器实战,提供了Flex、Transform和绝对定位等多种解决方案。特别针对Vue3的样式隔离机制,详细介绍了:deep()选择器和CSS Modules的最佳实践,帮助开发者高效解决弹窗居中难题。

weixin_30737899的博客 321

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Element Plus:Vue 3时代的企业级UI组件库全面解析

你是否曾为Vue 3项目寻找一个既专业又易用的UI组件库而烦恼?在众多选择中,Element Plus凭借其强大的功能、优雅的设计和完整的生态支持脱颖而出。作为Element UI的现代化继承者,这个完全开源的Vue 3 UI库不仅提供了60多个精心设计的组件,更带来了TypeScript原生支持和现代化的Composition API架构,让企业级应用开发变得更加高效和愉悦。 ## 为什么Vu

gitblog_01087的博客 337

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Vue 完整版系统知识文档

《Vue全栈开发实战手册》摘要 本手册系统整合Vue2/Vue3全栈知识体系,涵盖基础语法、组件开发、状态管理、工程化等核心内容,适合从入门到精通的完整学习路径。主要特点: 基础核心 详解MVVM架构和响应式原理(Vue2的Object.defineProperty vs Vue3的Proxy) 完整模板语法规则与16种内置指令解析 组件系统核心:通信机制(8种方案)、插槽、动态组件、递归组件 进阶实战 状态管理:Vuex/Pinia完整解决方案 路由开发:动态路由、权限控制、懒加载 工程化:Webpack

专注 Java 后端开发,分享基础语法、JVM、并发、Spring 全家桶、微服务、分布式、性能优化等实战干货。坚持输出高质量技术笔记,用简单语言讲清复杂原理,助力每一位 Java 开发者稳步进阶。 400

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

vue复用组件之弹窗组件复用

一 思路 1.定义 在共用组件文件夹中,建立一个vue文件,在elementui中复制el-dialog标签内容,加一个自己的插槽(用来自定义弹窗内容),prop 传一个title(用来自定义弹窗标题),在methods写两个方法,一个open打开弹窗(在将来的父组件中调用子组件方法),一个handleDefine(用来调用父组件中的确定方法) 2.全局注册 在main.js中引入组件,Vue.use(‘diaLog’, diaLog) 3.使用组件,在使用组件的位置@子组件的handleDefi

vue6214的博客 2903

VUE3+element plus在el-tabs内部有多个el-dialog时,遮罩会叠加

有问题的效果,遮罩层是黑色的,需要多次点击才能关闭dialog。

nopyramid的博客 1461

el-dialog嵌套el-dialog问题

⼀定要⽗级 el-dialog :modal-append-to-body=“false” ⼦级 el-dialog 同时加上 :append-to-body=“true” 含义: modal-append-to-body 遮罩层是否插⼊⾄ body 元素上,若为 false,则遮罩层会插⼊⾄ Dialog的⽗元素上 append-to-body Dialog ⾃身是否插⼊⾄ body 元素上。嵌套的 Dialog 必须指定定该属性并赋值为true ...

负数 4132

Dialog 对话框里面嵌套了一个Dialog 对话框

Dialog 对话框里面嵌套了一个Dialog 对话框,解决办法:append-to-body 关键代码如下: <html> <head> …… </head> <body> <div class="dept"> <el-dialog width="450px" :visible.sync="dialogVis...

xiaoma19941027的博客 3768

vue3+TS实战中Dialog弹窗封装复用技巧(修改和添加共用一个弹窗)涉及组件的传值(defineProps)和组件的自定义事件(emits)

组件的功能封装是前端工程师的必备技能,Dialog弹窗在后台管理系统中是使用频率非常高的组件,添加和修改数据基本都会用到,本文就讲讲在vue3和ts的项目中如何封装Dialog组件,实现代码高复用.

weixin_45745641的博客 7931

vue el-dialog嵌套解决无法点击问题

当你在 el-dialog 上嵌套另一个 el-dialog 窗口时,可能会遇到内部对话框无法点击的问题。这通常是由于嵌套对话框的遮罩层(overlay)或其他样式问题造成的。如果你的 el-dialog 组件支持 append-to-body 属性,你可以将对话框附加到 body 元素上,以避免 z-index 问题。

u013008898的博客 1423

ElementUI 对话框el-dialog嵌套问题

ElementUI对话框组件嵌套显示出现父组件无法正常显示和子组件无法正常关闭问题解决方法

weixin_44700621的博客 5011

Vue Element UI 弹窗 el-dialog嵌套与遮罩层最佳实践总结

摘要:本文探讨了Element UI嵌套弹窗(Modal)的常见问题及解决方案。通过分析append-to-body和modal-append-to-body属性的作用,提出最佳实践方案:将弹窗组件放在父级管理,子组件仅处理内容;推荐设置append-to-body=true和modal-append-to-body=false,避免遮罩层和层级问题。文中还提供了代码示例和设计原则,强调弹窗行为与内容分离、事件传递清晰、界面简洁的重要性。该方案能有效解决嵌套弹窗的显示异常问题,提升用户体验。

1769

多个dialog对话框同时出现的解决方法

多个dialog对话框同时出现的解决方法

qq_45900905的博客 2656

解决办法:Element UI中el-dialog双层嵌套问题,遮罩显示异常处理

1.给被嵌套的dialog增加custom-class属性 和append-to-body属性 <el-dialog custom-class="el-dialog-s" append-to-body :visible.sync="dialogVisible"> <img width="100%" :src="dialogImageUrl" alt=""> </el-dialog> 2.自定义样式,覆盖追加append-to-bod...

lh_seckill的博客 4257
下一篇: 美团Java后台一面
菜鸡小酌
博客等级 码龄9年 6粉丝 3原创
评论 10
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值