ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

利用element的tree实现多级类目管理

2021-06-14 20:31:30  阅读:172  来源: 互联网

标签:const 删除 tree label 类目 element data children


需求展示:

UE图就如上所示,主要要实现的功能的就是在展示所有的类目同时可以增加、删除、编辑一级类目并且能在一级类目下增加、删除、编辑二级类目。


实现思路:


1、 利用elementUI中的tree组件,传入数据,展示出初步效果
2、 增加一级类目和二级类目的功能按钮:增加、删除、编辑
3、 针对不同的功能调用对应接口即可


过程及代码展示:


1、 这里要注意数据格式,就是说官方文档要求的是label和children ,我们在接收后端返回的数据中也应当有对应的字段。

<el-tree :data="categoryList" :props="defaultProps" @node-click="handleNodeClick"></el-tree>

categoryList: [],
defaultProps: {
    children: 'children',
    label: 'label'
}

// 获取类目
getDiseasesList() {
    this.$api.queryDiseaseList({token: localStorage.getItem('token')}).then(res => {
        if(res.code===10000) {
            this.categoryList = res.data;
        }
    })
},


2、增加一级类目的功能:增加、删除、编辑;二级类目删除和编辑

由于二级类目不需要设置增加按钮,且没有children属性,所以我们通过v-if(data.children)来控制是否创建该节点;

由于后端返回的数据没有特定值例如id,但因为二级目录中的label属性也不会重复,所以我们可以用label代替官方文档中用的id,通过children.findIndex(d => d.label === data.label)来找到要删除的节点。

<el-tree :data="categoryList" :props="defaultProps" @node-click="handleNodeClick">
    <span class="custom-tree-node" slot-scope="{ node, data }">
        <el-input v-model="node.label" size="mini" readonly></el-input>
        <span style="margin-left:1rem">
            <el-button type="primary" size="mini" @click="() => append(data)" v-if="data.children"> 增加 </el-button>
            <el-button type="primary" size="mini" @click="() => remove(node, data)"> 删除 </el-button>
            <el-button type="primary" size="mini" @click="() => edit(node, data)"> 编辑 </el-button>
        </span>
    </span>
</el-tree>

append(data) {
    const newChild = { label: '', children: [] };
    if (!data.children) {
        this.$set(data, 'children', []);
    }
    data.children.push(newChild);
},
remove(node, data) {
    const parent = node.parent;
    const children = parent.data.children || parent.data;
    const index = children.findIndex(d => d.label === data.label);
    children.splice(index, 1);
},

3、 这一步是调用对应的接口,对数据进行处理就不作展示了。

 

 

 

标签:const,删除,tree,label,类目,element,data,children
来源: https://blog.csdn.net/weixin_42667381/article/details/117908751

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有