解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo
正文
鼠標(biāo)點(diǎn)在彈框上沒(méi)有放開(kāi),然后又移出到外面的遮罩上,這個(gè)時(shí)候還是觸發(fā)了遮罩的點(diǎn)擊事件
創(chuàng)建這樣的指令然后在 el-dialog 或 el-drawer 標(biāo)簽上使用就可以了
import Vue from 'vue'
Vue.directive('move-outside', {
bind(el, binding, vnode) {
// 通過(guò)事件委托綁定到共同父級(jí)元素上
el.addEventListener('mousedown', handleMouseDown)
/**
* 點(diǎn)擊事件
* @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')
// 判斷是否點(diǎn)擊在元素之外
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')
// 判斷是否點(diǎn)擊在元素之外
if (dialog && !dialog.contains(target)) {
// 執(zhí)行原有邏輯
if (!vnode.componentInstance.closeOnClickModal) return
vnode.componentInstance.handleClose()
}
}
// 清空原組件點(diǎn)擊事件
vnode.componentInstance.handleWrapperClick = () => {}
}
})以上就是解決element-ui el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo的詳細(xì)內(nèi)容,更多關(guān)于element-ui el-drawer關(guān)閉優(yōu)化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
解決打包后出現(xiàn)錯(cuò)誤y.a.addRoute is not a function的
這篇文章主要介紹了解決打包后出現(xiàn)y.a.addRoute is not a function的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
vue中vue-router的使用說(shuō)明(包括在ssr中的使用)
這篇文章主要介紹了vue中vue-router的使用說(shuō)明(包括在ssr中的使用),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
vue+elementUI 實(shí)現(xiàn)內(nèi)容區(qū)域高度自適應(yīng)的示例
這篇文章主要介紹了vue+elementUI 實(shí)現(xiàn)內(nèi)容區(qū)域高度自適應(yīng)的示例,幫助大家更好的理解和使用vue,感興趣的朋友可以了解下2020-09-09
vue中改變選中當(dāng)前項(xiàng)的顯示隱藏或者狀態(tài)的實(shí)現(xiàn)方法
下面小編就為大家分享一篇vue中改變選中當(dāng)前項(xiàng)的顯示隱藏或者狀態(tài)的實(shí)現(xiàn)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
vue-loader和webpack項(xiàng)目配置及npm錯(cuò)誤問(wèn)題的解決
這篇文章主要介紹了vue-loader和webpack項(xiàng)目配置及npm錯(cuò)誤問(wèn)題的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07
Vuejs中的watch實(shí)例詳解(監(jiān)聽(tīng)者)
本文通過(guò)實(shí)例代碼給大家介紹了Vuejs中的watch,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-01-01
Vue如何使用Element-ui表單發(fā)送數(shù)據(jù)與多張圖片到后端詳解
在做項(xiàng)目的時(shí)候遇到一個(gè)問(wèn)題,前端需要上傳表單到后端,表單數(shù)據(jù)包括文本內(nèi)容和圖片,這篇文章主要給大家介紹了關(guān)于Vue如何使用Element-ui表單發(fā)送數(shù)據(jù)與多張圖片到后端的相關(guān)資料,需要的朋友可以參考下2022-04-04

