当前功能需要使用popover,气泡里带有操作按钮,点击按钮与空白处都可以关闭气泡,用了官方几种案例都没有达到想要的效果,记录解决方案。
使用官方的虚拟触发
<el-button ref="buttonRef" v-click-outside="onClickOutside">通话</el-button>
<el-popover
ref="popoverRef"
:virtual-ref="buttonRef"
trigger="click"
title="选择通话方式"
virtual-triggering
>
<div>
<p @click="chooseType(1)">视频</p>
<p @click="chooseType(2)">语音</p>
</div>
</el-popover>
<script setup lang="ts">
import { ref, unref } from 'vue'
import { ClickOutside as vClickOutside } from 'element-plus'
const buttonRef = ref()
const popoverRef = ref()
const onClickOutside = () => {
unref(popoverRef).popperRef?.delayHide?.()
}
</script>
以上解决点击空白处关闭气泡
// 选择通话方式
const chooseType = (type:number) => {
//关闭起泡
popoverRef.value.hide()
}