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,即可阻止冒泡

相关推荐
excel7 分钟前
一文彻底搞懂 Vue3 中 ref 的源码实现(含详细注释)
前端
鹏多多8 分钟前
react-konva实战指南:Canvas高性能+易维护的组件化图形开发实现教程
前端·javascript·react.js
excel10 分钟前
一文彻底搞懂 Vue 中的 key(含 Vue2 / Vue3 对比)
前端
冰暮流星38 分钟前
css新增盒子属性——尺寸调节
前端·css
程序员爱钓鱼39 分钟前
Python编程实战 - 函数与模块化编程 - 函数的定义与调用
前端·后端·python
欧阳码农39 分钟前
使用AI生成的页面总是被一眼认出来怎么办?1分钟给你解决
前端·后端
IT_陈寒1 小时前
7个鲜为人知的JavaScript性能优化技巧,让你的应用提速50%!
前端·人工智能·后端
艾小码1 小时前
前端别再乱存数据了!这3种存储方案让你的应用快如闪电
前端·javascript
黄毛火烧雪下1 小时前
HTML 的底层原理
前端·html
球球和皮皮1 小时前
Babylon.js学习之路《添加自定义摇杆控制相机》
javascript·3d·前端框架·babylon.js