Element: [Bug Report]: 请教:在‘router’的‘beforEach’钩子中怎么获取当前显示的dialog组件并关闭它?

Created on 14 Jan 2019  ·  7Comments  ·  Source: ElemeFE/element

Element UI version

2.4.11

OS/Browsers version

windows/mac chrome

Vue version

2.5.22

Reproduction Link

https://jsfiddle.net/mmx38qxw/ 不是bug,木有链接哦

Steps to reproduce

任意界面中显示一个dialog,
点击浏览器的回退按钮,从router的beforeEach钩子中获取当前展示的dialog
关闭改dialog

What is Expected?

关闭dialog

What is actually happening?

dialog蒙版未消失,依然罩在整个界面上

Most helpful comment

这什么辣鸡组件,关个弹框 还要去操作DOM

All 7 comments

今天刚好遇到这个问题,发现直接操作dom会出问题

今天刚好遇到这个问题,发现直接操作dom会出问题

哈哈,我也是,操作dom能把dialog强制关掉,但是没法再打开。厉害了

今天刚好遇到这个问题,发现直接操作dom会出问题

你那边解决了,麻烦给说一下😀,这个问题我刚提没几小时,在线等状态。。。

今天刚好遇到这个问题,发现直接操作dom会出问题

你那边解决了,麻烦给说一下😀,这个问题我刚提没几小时,在线等状态。。。

手动获取dom,然后调用dom的click方法解决了。我是在vue-router的beforeEach里调用。注意要判断一下弹框的display,不然可能会报错。

function resetDialog() {
let modal = document.querySelector('.v-modal');
if(modal){
modal.click();
}
let dialog = document.querySelector('.el-dialog__wrapper');
if(dialog){
let result = window.getComputedStyle(dialog,null).getPropertyValue("display");
if(result !== 'none'){
let closeButton = document.querySelector('.el-dialog__close.el-icon.el-icon-close');
if(closeButton){
closeButton.click();
}
}
}
}

今天刚好遇到这个问题,发现直接操作dom会出问题

你那边解决了,麻烦给说一下😀,这个问题我刚提没几小时,在线等状态。。。

手动获取dom,然后调用dom的click方法解决了。我是在vue-router的beforeEach里调用。注意要判断一下弹框的display,不然可能会报错。

function resetDialog() {
let modal = document.querySelector('.v-modal');
if(modal){
modal.click();
}
let dialog = document.querySelector('.el-dialog__wrapper');
if(dialog){
let result = window.getComputedStyle(dialog,null).getPropertyValue("display");
if(result !== 'none'){
let closeButton = document.querySelector('.el-dialog__close.el-icon.el-icon-close');
if(closeButton){
closeButton.click();
}
}
}
}
66666666,给你点赞,dom操作关闭按钮,这个思路好。一开始我就想着操作dialog组件去了😢

这个 dialog 不在 router-view 中吧。还有一种思路是将 dialog 封装成一个 service,类似这个issue #12708

这什么辣鸡组件,关个弹框 还要去操作DOM

Was this page helpful?
0 / 5 - 0 ratings