el-popover无法点击、点击没反应、不能正常唤起弹出框

文章描述了一个在项目中遇到的问题,即使用element-ui的el-popover组件时,当列表被刷新或状态更新后,点击操作按钮无法唤出弹窗。问题的根本原因是v-if在组件未完全渲染时导致的。解决方案是使用v-show替代v-if来控制显示隐藏,确保DOM元素的存在,从而修复了弹窗无法触发的问题。
摘要由CSDN通过智能技术生成

项目场景:

在这里插入图片描述

表格内操作按钮点击后,刷新列表更新按钮显示状态

问题描述

`点击更新状态后的那条数据操作按钮。
发现element-ui的el-popover无法点击唤出弹窗,但刷新页面就可以正常点击进行操作。即el-popover刷新列表后无法点击


原因分析:

 <el-popover
                  :ref="`node-popover-adjust-download-${missions.id}`"
                  placement="right"
                  v-model="missions.isVisible"
                >
                  <p
                    v-if="!!missions.publishDep"
                    @click="
                      handleDownload(missions);
                      missions.isVisible = false;
                    "
                    style="color:var(--mainColor);cursor: pointer;"
                  >
                    下载风险提示函反馈单
                  </p>
                  <p
                    style="color:var(--mainColor);cursor: pointer;"
                    @click="
                      downNow(missions);
                      missions.isVisible = false;
                    "
                  >
                    下载风险事前评估表
                  </p>
                  <!-- 已提交已整改加有附件就可以下载 -->
                  <span
                    v-if="
                      missions.attachmentType === 1 &&
                        (!getSubmitStatus(missions) ||
                          (loginUl.depType === 1 && loginUl.orgId === 7))
                    "
                    style="pointer-events: auto;"
                    slot="reference"
                    class="handle download"
                    title="下载"
                  ></span>
                </el-popover>

点击操作按钮将v-if里的判断变成true,把下载按钮放出来后发现无法点击,但页面刷新就可以正常点击-唤醒弹窗,所以我认为是组件没实时监测到判断里值的变化


解决方案:

组件需要等页面渲染完成后才能拿到DOM元素,这是由于dom的渲染机制导致,所以不再销毁与重建,而是使用display让元素进行显示隐藏,问题终于解决,此问题与ref与v-if不能连用问题一样,解决办法是使用v-show代替v-if

 <span
                    v-show="
                      missions.attachmentType === 1 &&
                        (!getSubmitStatus(missions) ||
                          (loginUl.depType === 1 && loginUl.orgId === 7))
                    "
                    style="pointer-events: auto;"
                    slot="reference"
                    class="handle download"
                    title="下载"
                  ></span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JianZhen✓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值