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

相关推荐
恋猫de小郭12 分钟前
Flutter THLC 的 WebView 滚动终于从 70 FPS 提升到 120 FPS
android·前端·flutter
严肃小白兔1 小时前
TanStack Router 更新构建工具链:Node.js 兼容性、路由分割与前端工程实践
前端·node.js·状态模式
IT_陈寒1 小时前
Vue这个奇葩的响应式问题让我加班到凌晨
前端·人工智能·后端
风骏时光牛马1 小时前
功能可用性自动化测试验证
前端
LucianaiB11 小时前
【元宝搜索开发者征文大赛】AI时代,学得慢就不用学?用元宝搜索打造一个教程保质期,确保每一个教程符合你的现状
前端·人工智能·ai编程
excel11 小时前
JavaScript 对象池:减少高频对象创建与 GC 压力
前端
陈随易13 小时前
纯 Go 写的 JS 引擎,跑分超过了 C 语言的 QuickJS
前端·后端·程序员
子兮曰15 小时前
Chrome 权限元素实战:144 与 151 的渐进增强写法
前端·javascript·chrome
IT_陈寒15 小时前
Redis连接池泄漏那次,我差点把生产环境搞崩了
前端·人工智能·后端
强尼银手15 小时前
我花一天做了个格斗游戏原型,判定全对,然后被「美术」劝退了
前端·javascript