解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo
正文
鼠標點在彈框上沒有放開,然后又移出到外面的遮罩上,這個時候還是觸發(fā)了遮罩的點擊事件
創(chuàng)建這樣的指令然后在 el-dialog 或 el-drawer 標簽上使用就可以了
import Vue from 'vue'
Vue.directive('move-outside', {
bind(el, binding, vnode) {
// 通過事件委托綁定到共同父級元素上
el.addEventListener('mousedown', handleMouseDown)
/**
* 點擊事件
* @param event
*/
function handleMouseDown(event) {
const target = event.target
const drawerWrapper = target.closest('.el-drawer__wrapper')
const dialogWrapper = target.closest('.el-dialog__wrapper')
// 抽屜
if (drawerWrapper) {
handleMoveOutsideDrawer(drawerWrapper, target)
// 彈框
} else if (dialogWrapper) {
handleMoveOutsideDialog(dialogWrapper, target)
}
}
function handleMoveOutsideDrawer(wrapper, target) {
// 獲取el-drawer元素
const drawer = wrapper.querySelector('.el-drawer')
// 判斷是否點擊在元素之外
if (drawer && !drawer.contains(target)) {
// 執(zhí)行原有邏輯
if (!vnode.componentInstance.wrapperClosable) return
vnode.componentInstance.closeDrawer()
}
}
function handleMoveOutsideDialog(wrapper, target) {
// 獲取 el-dialog元素
const dialog = wrapper.querySelector('.el-dialog')
// 判斷是否點擊在元素之外
if (dialog && !dialog.contains(target)) {
// 執(zhí)行原有邏輯
if (!vnode.componentInstance.closeOnClickModal) return
vnode.componentInstance.handleClose()
}
}
// 清空原組件點擊事件
vnode.componentInstance.handleWrapperClick = () => {}
}
})以上就是解決element-ui el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo的詳細內(nèi)容,更多關(guān)于element-ui el-drawer關(guān)閉優(yōu)化的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
在elementui中Notification組件添加點擊事件實例
這篇文章主要介紹了在elementui中Notification組件添加點擊事件實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Vue.js中的全局錯誤處理函數(shù)errorHandler用法
這篇文章主要介紹了Vue.js中的全局錯誤處理函數(shù)errorHandler用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
vue項目中使用particles實現(xiàn)粒子背景效果及遇到的坑(按鈕沒有點擊響應)
為了提高頁面展示效果,登錄界面內(nèi)容比較單一的,粒子效果作為背景經(jīng)常使用到,vue工程中利用vue-particles可以很簡單的實現(xiàn)頁面的粒子背景效果,本文給大家分享在實現(xiàn)過程中遇到問題,需要的朋友一起看看吧2020-02-02
Vue3使用vue-router如何實現(xiàn)路由跳轉(zhuǎn)與參數(shù)獲取
這篇文章主要介紹了Vue3使用vue-router如何實現(xiàn)路由跳轉(zhuǎn)與參數(shù)獲取,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03

