[Element UI] el-popover实现点击空白区域关闭,点击弹窗区域不关闭

请添加图片描述
思路:
在 popover 组件的 show 方法中, 注册一个 document 的点击事件, 在该事件回调方法中, 判断点击的是否为 popover 组件外的空白区域, 若是, 则关闭 popover 组件.

注:
要在关闭回调事件中移除事件, 防止重复注册监听.

<el-popover
  ref="popoverEl"
  trigger="manual"
  placement="bottom-end"
  v-model="visible"
  :width="width"
  @show="show"
  @hide="close"
  :append-to-body="appendToBody"
>
  <div
    class="popover-tree-el-title"
    slot="reference"
    :style="setTitleStyle"
    @click="showOrHidePopoverEl"
  >
    <div class="popover-tree-el-title-text click-text">
      <i class="el-icon-edit-outline l-mr-10"></i>
      <span>{{ popoverElTitle }}</span>
    </div>
  </div>
</el-popover>
<script>
  export default {
    methods: {
      show() {
        document.addEventListener('click', this.hidePanel, false)
      },
      close() {
        document.removeEventListener('click', this.hidePanel, false)
        this.visible = false
      },
      // 点击空白区域隐藏面板事件
      hidePanel(e) {
        const isOtherArea =
          !e.target.parentElement.className.includes('click-text')
        if (isOtherArea) this.close()
      },
    },
  }
</script>
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值