Element Plus 在 popover 弹出框中嵌入 select 选择器,选中选项后弹出框被关闭

文章讲述了在Vue3项目中,ElementPlus的el-popover与el-select配合时,选中select选项后popover关闭的问题。原因是el-select的选项弹框不在popover上,解决方法是设置el-select的teleported属性为false。
摘要由CSDN通过智能技术生成

Element Plus 在 popover 弹出框中嵌入 select 选择器,选中选项后弹出框被关闭

1 问题描述

Vue3 + Element Plus 项目中,在 el-popover 弹出框组件中嵌入 el-select 选择器组件后,点击 el-select 选择器选中选项后,不仅 el-select 选择器的选项弹框关闭了,外层 el-popover 组件的弹框也一并关闭了。
在这里插入图片描述
相关代码如下:

<el-popover :width="400" trigger="click">
  <template #reference>
    <el-button type="primary">发布</el-button>
  </template>
  <template #default>
    <div class="popover-title">发布文章</div>
    <el-form class="popover-form">
      <el-form-item class="popover-form-item" label="建议分类" required>
      	<el-select
          class="form-item-select"
          placeholder="请选择一个分类"
          @change="onSelectCategoryItem"
          v-model="articleInfo.categoryId"
        >
          <el-option
            :key="item.categoryId"
            :value="item.categoryId"
            :label="item.categoryName"
            v-for="item in categoryOptions"
          />
        </el-select>
      </el-form-item>
    </el-form>
  </template>
</el-popover>

2 引发原因

el-popover 弹出框组件的关闭逻辑是当点击 popover 弹框以外的元素时,弹框就会关闭。然而 el-select 的 options 弹框默认是针对页面元素进行渲染的,而不是针对父元素渲染。也就是说, el-select 的 options 弹框不在 el-popover 弹出框上,点击options 弹框后会触发 popover 弹窗框的关闭条件,因此就会造成选择 el-select 选择器的选项后,外层的 el-popover 弹出框也会关闭。

3 解决方法

经查找 CSDN 相关博客 Element Plus 的 Select 选择器组件文档后发现,Select 选择器有一个属性 teleported,该属性可以控制 options 弹框的渲染位置。
在这里插入图片描述
teleported 属性的默认值为 true,只需要在代码中给其赋值为 false 即可解决该问题。

<el-select
	:teleported="false"
></el-select>
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vesuvius688

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

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

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

打赏作者

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

抵扣说明:

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

余额充值