Vue在el-table中使用el-popover遇到的坑

el-table表格中使用el-popover打开和关闭失效的问题及解决过程

在 element-ui 中 el-table 中使用Popover弹框

复制代码
<el-table-column>
    <template slot-scope="scope">
        <el-popover placement="bottom" title="更多" width="100" trigger="click" :ref="`popover-${scope.$index}`">
              
          <el-button type="primary" size="mini" @click="handleConfirm(scope)">确定</el-button>
             
        <el-button type="text" size="small" slot="reference">更多</el-button>
        </el-popover>
   </template>
</el-table-column>
复制代码

 

这里ref使用变量的形式,因为是多个循环的el-popover
这里需要点击确定来关闭el-popover窗口,发现如下代码不生效

handleConfirm(scope) {
scope._self.$refs[`popover-${scope.$index}`].doClose()
scope._self.$refs[`popover-${scope.$index}`].showPopper = false
}

发现vue 不能检测到ref的值变化 不能触发视图更新,原因是表格中添加lazy 懒加载
通过如下代码解决

1
2
3
handleConfirm() {
    document.body.click() // 模拟点击页面其它部分关掉弹层,因为该页面列表使用懒加载导致doClose无效
}

  

posted @   蓝色精灵jah  阅读(1475)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示