el-popover的虚拟触发


<template>
  <el-button
    v-for="(button, index) in buttons"
    :key="button.id"
    ref="buttonRefs"
    @click="handleButtonClick(index)"

  >
    <!-- 遍历多个按钮 重点在buttonRefs里,此处需要定义数组 -->
    {{ button.label }}
  </el-button>
  <el-popover
    ref="popoverRef"
    :virtual-ref="buttonRef"
    :visible="hidePopover"
    title="With title"
    virtual-triggering
  >
    <div v-click-outside="onClickOutside">
        <span> popover content </span>
        <el-button link type="primary" @click="hidePopover = false">删除</el-button>
    </div>
  </el-popover>
</template>

<script setup lang="ts">
  import { ref, unref } from 'vue'
  // element-puls的方法,自定义指令,点击外部区域的处理
  import { ClickOutside as vClickOutside } from 'element-plus'
  // 数组形式
  const buttonRefs = ref([])
  // popover虚拟触发绑定的ref参数
  const buttonRef = ref()
  //popover的ref参数
  const popoverRef = ref()
  //控制popover显示与隐藏
  const hidePopover = ref(false)
  // 隐藏popover,用于点popover窗口外隐藏popover
  const onClickOutside = () => {
    hidePopover.value = false
  }
  // 显示popover
  const handleButtonClick = (data) => {
    // 重新赋值virtual-ref绑定的 ref参数
    buttonRef.value = buttonRefs.value[data]
    // 显示popover
    hidePopover.value = true
  }
  const buttons = [
    { id: 1, label: 'Button 1' },
    { id: 2, label: 'Button 2' },
    { id: 3, label: 'Button 3' },
  ]
</script>

以上代码可直接运行

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值