解决element-ui el-drawer抽屉el-dialog弹框关闭优化demo

 更新时间:2023年06月29日 09:37:02   作者:围_城  
这篇文章主要为大家介绍了解决element-ui el-drawer抽屉el-dialog弹框关闭优化demo,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>

正文

鼠标点在弹框上没有放开,然后又移出到外面的遮罩上,这个时候还是触发了遮罩的点击事件

创建这样的指令然后在 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)) {
        // 执行原有逻辑
        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)) {
        // 执行原有逻辑
        if (!vnode.componentInstance.closeOnClickModal) return
        vnode.componentInstance.handleClose()
      }
    }
    // 清空原组件点击事件
    vnode.componentInstance.handleWrapperClick = () => {}
  }
})

以上就是解决element-ui el-drawer抽屉el-dialog弹框关闭优化demo的详细内容,更多关于element-ui el-drawer关闭优化的资料请关注脚本之家其它相关文章!

相关文章

  • Vue.js tab实现选项卡切换

    Vue.js tab实现选项卡切换

    这篇文章主要为大家详细介绍了Vue.js组件tab实现选项卡切换效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • vue $attrs的使用全面解析

    vue $attrs的使用全面解析

    这篇文章主要介绍了vue $attrs的使用全面解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-04-04
  • 详解如何使用webpack在vue项目中写jsx语法

    详解如何使用webpack在vue项目中写jsx语法

    本篇文章主要介绍了详解如何使用webpack在vue项目中写jsx语法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 在elementui中Notification组件添加点击事件实例

    在elementui中Notification组件添加点击事件实例

    这篇文章主要介绍了在elementui中Notification组件添加点击事件实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Vue.js中的全局错误处理函数errorHandler用法

    Vue.js中的全局错误处理函数errorHandler用法

    这篇文章主要介绍了Vue.js中的全局错误处理函数errorHandler用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • vue3中使用swiper及遇到的问题解析

    vue3中使用swiper及遇到的问题解析

    这篇文章主要介绍了vue3中使用swiper及遇到的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • vue中预览zip的实现示例

    vue中预览zip的实现示例

    打包压缩成zip的东西,再解压,很麻烦,本文主要介绍了vue中预览zip的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-09-09
  • vue2.0自定义指令示例代码详解

    vue2.0自定义指令示例代码详解

    指令通常以"v-"作为前缀, 以方便Vue知道你在使用一种特殊的标记。这篇文章主要介绍了vue2.0自定义指令的实例代码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-04-04
  • vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)

    vue项目中使用particles实现粒子背景效果及遇到的坑(按钮没有点击响应)

    为了提高页面展示效果,登录界面内容比较单一的,粒子效果作为背景经常使用到,vue工程中利用vue-particles可以很简单的实现页面的粒子背景效果,本文给大家分享在实现过程中遇到问题,需要的朋友一起看看吧
    2020-02-02
  • Vue3使用vue-router如何实现路由跳转与参数获取

    Vue3使用vue-router如何实现路由跳转与参数获取

    这篇文章主要介绍了Vue3使用vue-router如何实现路由跳转与参数获取,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-03-03

最新评论