element ui 中 Popover 组件定位不精准的问题

问题原因

  Popover 内部数据动态获取到之后,Popover 尺寸变化导致的定位不准确

解决方法

  动态数据获取到之后,调用 Popover 的 updatePopper() 方法重新计算 Popover 的位置。

示例

// 异步获取 Popover 中的数据
getTableData(params)
   .then(res => {
       this.$nextTick(() => {
          if (this.$refs.popover) {
             this.$refs.popover.updatePopper();
          }
       })
   })

注意

  如果 el-popover 组件是嵌套在 el-table 中使用,且 el-table 含有设置了 fixed 属性的列,则上例中的 popover 会是一个数组,这是由 el-table 组件 fixed 列的实现方式决定的(会渲染出多个表格)。

  此时上例可以修改为下面的代码

// 异步获取 Popover 中的数据
getTableData(params)
   .then(res => {
       this.$nextTick(() => {
       	   // 表格中要获取到指定行的 popover,popoverKey 可以是 row.id 之类的
           let popover = this.$refs['popover' + popoverKey];
           if(popover) {
               if (popover.updatePopper) {
                   popover.updatePopper();
               } else {
                   // 因为表格用到了 fixed 列,所以 selectPopover 会是一个列表
                   popover.forEach(item => {
                   	   // 列表中只有一个 popover 是有用的
                       if (item.updatePopper) {
                           item.updatePopper();
                       }
                   })
               }
           }
       })
   })
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值