欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo

 更新時(shí)間:2023年06月29日 09:37:02   作者:圍_城  
這篇文章主要為大家介紹了解決element-ui?el-drawer抽屜el-dialog彈框關(guān)閉優(yōu)化demo,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪<BR>

正文

鼠標(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)文章

最新評(píng)論