el-popover随点击位置变化

在使用 Element UI时,el-popover 组件默认是绑定到一个特定的触发元素上的,并且会在该触发元素的附近显示。然而,如果你希望 el-popover 能够根据用户的点击位置动态显示,(如表格中的每一项),需要进行一些自定义处理。

1. 创建一个 Vue 组件

在这个组件中,我们将处理点击事件并更新 el-popover 的位置。

html 复制代码
    <!-- 触发 Popover 的按钮(可选) -->
    <el-button @click="clickPop('button',$event)">点击</el-button>
    
    <!-- Popover 组件 -->
    <el-popover
        v-if="showPop"
        ref="pop"
        :reference="reference"
        placement="right"
        :offset="200"
        trigger="click"
    >
      <p>我是悬浮框</p>
    </el-popover>

2. 点击时,更新 Popover 的位置

根据点击事件的位置,更新 Popover 的显示位置。

javascript 复制代码
// data
data() {
    return {
      reference: {},
      // 控制渲染条件 如果不用v-if会报错 具体可自行尝试
      showPop: false,
      // 保存当前激活的refrence id
      activeItem: null,
    };
  },

点击事件处理

javascript 复制代码
// 点击显示Pop
    clickPop(item, event) {
      // 这个操作是为了避免与源码中的点击reference doToggle方法冲突
      if (this.activeItem === item && this.showPop) return;
      this.showPop = false;
      this.activeItem = item;
      // 设置reference 
      this.reference = event.target;

      this.$nextTick(() => {
        // 等待显示的popover销毁后再 重新渲染新的popover
        this.showPop = true;
        this.$nextTick(() => {
          // 此时才能获取refs引用
          this.$refs.pop.doShow();
        });
      });
    },
相关推荐
搬砖记录员1 分钟前
录屏总黑屏?90% 的人没关这个开关——浏览器硬件加速冲突排查指南
前端·音视频开发
promiseThen5 分钟前
我用 7 条铁律管住 Cursor:让 AI 写代码不再「自由发挥」
前端·ai编程
天道kabuto18 分钟前
vue-i18n 升级 9.x 踩坑:正则表达式引发的“花括号”惨案
vue.js
梨想橙汁21 分钟前
JS 核心语法:运算符流程控制、函数、数组与对象实战详解
前端·javascript
七牛开发者22 分钟前
拆解 dsh:Turn 与 Step 如何组织 Agent 主循环
前端·javascript·人工智能
空想兔22 分钟前
前端网络请求的前世今生:从 Ajax、XHR 到 Fetch 和 Axios
javascript
梨想橙汁23 分钟前
JavaScript 零基础入门:引入方式、变量与数据类型,吃透原始与引用类型
前端·javascript
不可能片场26 分钟前
puppeteer 调试实录:CDP 双层响应让取值永远 None
前端·electron
咖啡无伴侣27 分钟前
2. 从零搭建企业级 Monorepo 工程化模板:ESLint 10 (基础骨架)+ Prettier 配置与避坑指南
前端·架构
光影少年31 分钟前
react navite实现全局弹窗、Toast 组件
前端·react native·react.js