elementUI_drawer踩坑_抽屉关闭问题

需求描述
  • 需求:当点击 ”信息详情“ 按钮时,显示一个弹框显示详情内容;

    • <el-drawer
        title="详情"
        size="1386"
        :direction="direction"
        :visible.sync="userInfoVisible"
        :modal-append-to-body="false"
        :wrapperClosable="false"
        :withHeader="true"
        custom-class="user_info_dialog"
      >
      </el-drawer>
      
    • 做一个如上抽屉弹框,页面关闭使用的是右上角的 “X” 按钮(elementUI内部封装的)

实现1

直接将抽屉写在当前页面中,关闭抽屉时–>点击页面其他地方没有任何问题;

实现2
  • 将抽屉封装成组件,在页面中引入此组件;
    • 控制抽屉显示与隐藏的visible通过父组件传过来;
 props:{
    userInfoVisible:{
      type:Boolean
  },
问题1
问题
  • 点击“X”按钮关闭弹框-弹框关闭;
  • 点击页面任何地方-弹框重新显示;
原因
  • 感觉是我们将参数通过父组件传递过来,elementUI组件无法去修改父组件的数据;
解决
  • 当点击“X”按钮时,我们手动修改属性的值;

  • <el-drawer
      title="详情"
      size="1386"
      :direction="direction"
      :visible.sync="userInfoVisible"
      :modal-append-to-body="false"
      :before-close="detailHandleDrawerClose"
      :wrapperClosable="false"
      :withHeader="true"
      custom-class="user_info_dialog"
    >
    </el-drawer>
    
  • detailHandleDrawerClose(){
       this.$emit('update:userInfoVisible',false)
    }
    
问题2
  • 前提: 当前页面数据内容多,会有滚动条;

  • 问题:当点击详情,关闭抽屉,有时滚动条消失—数据不能显示完全;

  • 原因:

    • 当抽屉显示时 会为body添加类名 el-popup-parent–hidden;
      • 该类的作用是给body设置overflow:hidden,来阻止遮罩层后内容滚动;
    • 但是关闭抽屉时有时会没有清除这个类名
  • 改正实现

    • detailHandleDrawerClose(){
         this.$emit('update:userInfoVisible',false)
         document.getElementsByTagName('body')[0].className = '';
      }
      
    • 在关闭抽屉时,手动将类名清空;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值