el-tree与el-popover配合使用避免事件冒泡

  <el-tree ref="sceneTreeRef" :filter-node-method="filterNode" class="scene-layer-tree" show-checkbox
            node-key="nodeKey" :allow-drag="allowDragHandler" :allow-drop="allowDropHandler" @node-drop="handleDrop"
            :data="TreeData.list" draggable default-expand-all @check="check">
            <template #default="{ data }">
                <span :title="data.title" class="tree-item-title">
                    <i class="fal fa-folder-open" style="color: #f2cc7b; margin: 5px" v-if="data.type == 'group'"></i>
                    <!-- 可以选择用一个< span >将整个< el-popover >包起来,给span加 一个 @click.stop,即可阻止冒泡 -->
                    <span @click.stop>
                        <el-popover placement="top" :width="200" trigger="click" class="propovers">
                            <template #reference>
                                <i class="fal fa-cog icon-setting"></i>
                            </template>
                            <template #default>
                                <div class="edit-item" v-if="data.type != 'root'" @click=editLayer(data)>
                                    <i class="fal fa-edit"></i>
                                    <span>{{ $t("x_edit") }}</span>
                                </div>
                                <div class="edit-item" v-if="data.type == 'group' || data.type == 'root'"
                                    @click="addNewLayer(data)">
                                    <i class="fal fa-layer-plus"></i>
                                    <span>{{ $t("x_add_a_new_layer") }}</span>
                                </div>
                                <div class="edit-item" v-if="data.type == 'group' || data.type == 'root'"
                                    @click="addFolder(data)">
                                    <i class="fal fa-folder-plus"></i>
                                    <span>{{ $t("x_add_folders") }}</span>
                                </div>
                                <div class="edit-item" v-if="data.type != 'root'" @click="deleteLayerFromTree(data)">
                                    <i class="fal fa-trash-alt"></i>
                                    <span>{{ $t("x_delete") }}</span>
                                </div>
                            </template>
                        </el-popover>
                    </span>
                    {{ data.title }}
                </span>
            </template>
        </el-tree>

解决方法: 可以选择用一个< span >将整个< el-popover >包起来,给span加 一个 @click.stop,即可阻止冒泡

相关推荐
JUNAI_Strive_ving14 分钟前
番茄小说逆向爬取
javascript·python
看到请催我学习23 分钟前
如何实现两个标签页之间的通信
javascript·css·typescript·node.js·html5
twins352043 分钟前
解决Vue应用中遇到路由刷新后出现 404 错误
前端·javascript·vue.js
qiyi.sky1 小时前
JavaWeb——Vue组件库Element(3/6):常见组件:Dialog对话框、Form表单(介绍、使用、实际效果)
前端·javascript·vue.js
煸橙干儿~~1 小时前
分析JS Crash(进程崩溃)
java·前端·javascript
哪 吒1 小时前
华为OD机试 - 几何平均值最大子数(Python/JS/C/C++ 2024 E卷 200分)
javascript·python·华为od
安冬的码畜日常1 小时前
【D3.js in Action 3 精译_027】3.4 让 D3 数据适应屏幕(下)—— D3 分段比例尺的用法
前端·javascript·信息可视化·数据可视化·d3.js·d3比例尺·分段比例尺
杨荧2 小时前
【JAVA开源】基于Vue和SpringBoot的洗衣店订单管理系统
java·开发语言·vue.js·spring boot·spring cloud·开源
l1x1n02 小时前
No.3 笔记 | Web安全基础:Web1.0 - 3.0 发展史
前端·http·html
Q_w77422 小时前
一个真实可用的登录界面!
javascript·mysql·php·html5·网站登录