解決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)文章
Vue.js tab實(shí)現(xiàn)選項(xiàng)卡切換
這篇文章主要為大家詳細(xì)介紹了Vue.js組件tab實(shí)現(xiàn)選項(xiàng)卡切換效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05詳解如何使用webpack在vue項(xiàng)目中寫(xiě)jsx語(yǔ)法
本篇文章主要介紹了詳解如何使用webpack在vue項(xiàng)目中寫(xiě)jsx語(yǔ)法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11在elementui中Notification組件添加點(diǎn)擊事件實(shí)例
這篇文章主要介紹了在elementui中Notification組件添加點(diǎn)擊事件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11Vue.js中的全局錯(cuò)誤處理函數(shù)errorHandler用法
這篇文章主要介紹了Vue.js中的全局錯(cuò)誤處理函數(shù)errorHandler用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06vue項(xiàng)目中使用particles實(shí)現(xiàn)粒子背景效果及遇到的坑(按鈕沒(méi)有點(diǎn)擊響應(yīng))
為了提高頁(yè)面展示效果,登錄界面內(nèi)容比較單一的,粒子效果作為背景經(jīng)常使用到,vue工程中利用vue-particles可以很簡(jiǎn)單的實(shí)現(xiàn)頁(yè)面的粒子背景效果,本文給大家分享在實(shí)現(xiàn)過(guò)程中遇到問(wèn)題,需要的朋友一起看看吧2020-02-02Vue3使用vue-router如何實(shí)現(xiàn)路由跳轉(zhuǎn)與參數(shù)獲取
這篇文章主要介紹了Vue3使用vue-router如何實(shí)現(xiàn)路由跳轉(zhuǎn)與參數(shù)獲取,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03