前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >前端VUE【实战】—— antd tree树形控件进行增删改查父子节点

前端VUE【实战】—— antd tree树形控件进行增删改查父子节点

作者头像
江咏之
发布2022-06-17 14:38:12
1.8K0
发布2022-06-17 14:38:12
举报
文章被收录于专栏:技术社区技术社区

前言

antd 对树形控件目录进行增删改查

最近在用Ant Design写一个后台,遇到的需求就是实现一个可动态增减和编辑子节点的Tree。

实现的效果如下:

  • 可以增加父子节点
  • 可以删除子节点
  • 可以编辑子节点信息
  • 可以取消编辑信息

具体的效果图如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

直接上代码

vue组件

代码语言:javascript
复制
<a-row :gutter="24">
<!-- 新增一级目录 -->
      <a-col :md="6" :sm="8" style="display:flex">
        <a-input placeholder="请输入目录名称" v-model="addValue" @change="inChange()" />
        <a-button
          type="primary"
          style="margin-left:20px"
          icon="plus"
          @click="onAdd"
          :disabled="disabled"
        >新增目录</a-button>
      </a-col>
</a-row>

    <a-tree :tree-data="policiesAndRegulationss" :blockNode="true">
      <template slot="custom" slot-scope="item">
        <div class="box">
          <!-- 目录名称 -->
          <span>{{ item.name }}</span>
          <div>
            <!-- 新增二级文件 -->
            <a-icon style="color: red;" type="plus-circle" v-show="item.level==1" />
            <!-- 二级文件增删改 -->
            <a-icon style="color: red;" type="form" v-show="item.level==2" />
            <a-icon style="color: red;margin:0 10px" type="delete" v-show="item.level==2" />
            <a-icon style="color: red;" type="arrow-down" v-show="item.level==2" />
          </div>
        </div>
      </template>
    </a-tree>

方法

代码语言:javascript
复制
data() {
        return {
            policiesAndRegulationss: []
        }
  },
   methods: {
        //列表查询 处理数据格式
        getRecord() {
            postDataToMng(this.url.list, { pageSize: 9999 }).then(res => {
                if (res.errCode == 0) {
                    let data = JSON.parse(res.bizContent)
                    for (let index = 0; index < data.policiesAndRegulationss.length; index++) {
                        data.policiesAndRegulationss[index].scopedSlots = { title: 'custom' } //遍历一级添加插槽
                        //二级菜单名字改为children
                        data.policiesAndRegulationss[index].children = data.policiesAndRegulationss[index].policiesAndRegulationsAOList
                        //删除原 二级菜单
                        delete data.policiesAndRegulationss[index].policiesAndRegulationsAOList

                        for (let i = 0; i < data.policiesAndRegulationss[index].children.length; i++) {
                            data.policiesAndRegulationss[index].children[i].scopedSlots = { title: 'custom' } //遍历二级添加插槽
                        }
                    }
                    this.policiesAndRegulationss = data.policiesAndRegulationss
                    console.log(this.policiesAndRegulationss);
                } else {
                    this.$message.error(res.errMsg)
                }
            })
        }
    }

使用插槽 插入增删改查的方法

在这里插入图片描述
在这里插入图片描述

二级list必须为children,添加插槽时需将一二级list的对象中插入scopedSlots对象。具体实现方法参考以上代码,使用for遍历插入。

代码语言:javascript
复制
 slot="custom"
 ----------------
 scopedSlots:{
	title:'custom'
 }
在这里插入图片描述
在这里插入图片描述

数据处理格式如下

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
policiesAndRegulationss : [
      {
        title: '0-0-0',
        key: '0-0-0',
        scopedSlots:{
			title:'custom'
		}
        children: [
          { 
          title: '0-0-0-0', 
          key: '0-0-0-0',
          scopedSlots:{
			title:'custom'
		  } 
		 },
        ],
      },
      {
        title: '0-0-1',
        key: '0-0-1',
        scopedSlots:{
			title:'custom'
		}
        children: [
          { 
          title: '0-0-1-0', 
          key: '0-0-1-0',
          scopedSlots:{
			title:'custom'
		  } 
		 },
        ],
      },
],

欢迎留言补充,完!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档