avue-tree树形结构,el-tree如何实现点右键出菜单

从Avue到El-tree
在尝试使用avue-tree进行项目开发时遇到编辑选中值的难题,最终选择el-tree并实现了通过id来编辑选中项的功能。本文分享了el-tree的使用方法及右键菜单的实现。

开发一个项目需要使用avue,于是使用了avue-tree,但是后面想要编辑选中树形中对应的值的时候发现不知道应该给什么值,查了好多资料,也没有查到给的值应该是什么格式,于是果断使用el-tree,换成el-tree后,编辑给值就好给多了,直接给对应的id,放在数组中就ok了。

如果大家有解决了的话欢迎评论告诉我,谢谢!!此篇参考某位兄弟的写法~

分享下我使用的el-tree的写法,以及右键出菜单的样式代码

<!-- 修改为el-tree,因为avue-tree编辑时候不好给选中的值 -->
                                    <el-tree :loading="treeLoading" ref="elTree" :data="dictData" :highlight-current="true" :default-expanded-keys="[diryectoryID]"
                                     @node-click="nodeClick" node-key="value" @node-contextmenu="rightClick">
                                    </el-tree>
                                    <div id="menu" v-show="showRightMenu" @mouseleave="showRightMenu=!showRightMenu">
                                        <el-card class="box-card">
                                            <div class="text item">
                                                <el-link icon="el-icon-circle-plus-outline" :underline="false" @click="addSecondDeryectory">新增下级目录</el-link>
                                            </div>
                                        </el-card>
                                    </div>

.text {
        font-size: 14px;
    }

    .item {
        margin-left: 10px;
    }

    .clearfix:before,
    .clearfix:after {
        display: table;
        content: "";
    }

    .clearfix:after {
        clear: both
    }

    .box-card {
        width: 150px;
        height: 40px;
    }
右键的操作重点

    rightClick(MouseEvent, object, Node, element) {
                console.log(MouseEvent, object, Node, element);
                this.currentNodeValue = object.value
                this.showRightMenu = true
                let menu = document.querySelector("#menu");
                menu.style.cssText = "position: fixed; left: " + (MouseEvent.clientX - 10) + 'px' + "; top: " + (MouseEvent.clientY -
                    25) + 'px; z-index: 999; cursor:pointer;';
            }

Avue 框架中实现树形结构的拖拽功能,可以通过其提供的 `avue-tree` 组件结合 Vue 的拖拽指令或者使用第三方库如 `vuedraggable` 来完成。以下是一个基于 `avue-tree` 和 `vuedraggable` 实现拖拽功能的代码示例: ### 示例:Avue Tree拖拽功能实现 首先确保项目中已经引入了 Avue 和 `vuedraggable`: ```bash npm install vuedraggable ``` 然后在组件中使用: ```vue <template> <div> <avue-tree ref="tree" :data="treeData" :props="defaultProps" node-key="id" show-checkbox draggable @node-drop="handleNodeDrop" > </avue-tree> </div> </template> <script> import { tree } from 'avue'; import draggable from 'vuedraggable'; export default { components: { AvueTree: tree, draggable }, data() { return { defaultProps: { children: 'children', label: 'label' }, treeData: [ { id: 1, label: '一级节', children: [ { id: 2, label: '二级节', leaf: false } ] }, { id: 3, label: '另一个一级节', children: [ { id: 4, label: '子节', leaf: true } ] } ] }; }, methods: { handleNodeDrop(node, targetNode, type, event) { console.log('节已拖拽', node, '到目标节', targetNode, '位置:', type); // 在此处可以执行保存拖拽后的新结构逻辑 } } }; </script> ``` ### 功能说明: - **draggable 属性**:启用节拖拽功能。 - **@node-drop 事件**:当节被拖拽并放置时触发,参数包括当前节、目标节以及拖拽类型(before, after, inner)[^1]。 - **node-key 属性**:用于设置唯一标识字段名,通常是 `id`。 通过上述代码,你可以实现一个基本的树形结构拖拽功能,并在控制台输拖拽后的节信息。如果需要持久化保存拖拽后的新顺序,可以在 `handleNodeDrop` 方法中调用接口更新数据库数据。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值