这次有个功能 ant的tree 展开 点击子节点 新增节点之后 数据能够照常展开

有几种方法

我能想到的 因为ant 有个expanded 只要设置为true就能展开了,但是这边有个陷阱,就是仅仅设置子节点的expanded为true的时候 它父节点是不展开的,也需要它父节点额expanded为true

它还提供了一个api 就有个defaultExpandedKeys = ['0-0', '0-0-0', '0-0-1']; 这个defaultExpandedKeys 数组里面的值就算它父节点的key集合们

第一种方法 将data 每个都要添加pathKeys

var spect = [{
"key": 22456260137536,
"id": "root",
pathKeys: [],
"type": "org",
"title": "根组织",
"parentSid": 0,
"children": [{
"key": 22456302834240,
pathKeys: [],
"id": "child_1",
"type": "org",
"title": "部门",
"parentSid": 22456260137536,
"children": [{
"key": 120250157011520,
pathKeys: [],
"id": "147460064539200",
"type": "org",
"title": "test-001",
"parentSid": 22456302834240
}, {
"key": 120619034903104,
pathKeys: [],
"id": "147828945097280",
"type": "org",
"title": "test000",
"parentSid": 22456302834240
}, {
"key": 120619165348416,
pathKeys: [],
"id": "147829075550784",
"type": "org",
"title": "2222",
"parentSid": 22456302834240
}, {
"key": 120626434175552,
pathKeys: [],
"id": "147836344422976",
"type": "org",
"title": "333",
"parentSid": 22456302834240
}, {
"key": 121592991220288,
pathKeys: [],
"id": "148802957083200",
"type": "org",
"title": "qiqiqi23333",
"parentSid": 22456302834240
}]
}, {
"key": 121665603314240,
pathKeys: [],
"id": "148875569611328",
"type": "org",
"title": "333",
"parentSid": 22456260137536
}, {
"key": 121665737142848,
pathKeys: [],
"id": "148875703456320",
"type": "org",
"title": "233333",
"parentSid": 22456260137536,
"children": [{
"key": 121674823979584,
pathKeys: [],
"id": "148884790379072",
"type": "org",
"title": "122",
"parentSid": 121665737142848
}, {
"key": 121675403362880,
pathKeys: [],
"id": "148885369774656",
"type": "org",
"title": "333",
"parentSid": 121665737142848
}, {
"key": 121675935605312,
"id": "148885902012992",
"type": "org",
"title": "2222",
"parentSid": 121665737142848
}]
}, {
"key": 57249373893184,
"id": "aa",
"type": "role",
"title": "aaa",
"parentSid": 22456260137536
}]
}, {
"key": 38166237606464,
pathKeys: [],
"id": "test",
"type": "org",
"title": "test",
"parentSid": 0,
"children": [{
"key": 40615561060928,
pathKeys: [],
"id": "testchil",
"type": "org",
"title": "testchil",
"parentSid": 38166237606464
}]
}, {
"key": 40619971723840,
pathKeys: [],
"id": "test1",
"type": "org",
"title": "test11",
"parentSid": 0,
"children": [{
"key": 40621094822464,
pathKeys: [],
"id": "test1chil",
"type": "org",
"title": "test1chil",
"parentSid": 40619971723840
}]
}, {
"key": 114144172368448,
pathKeys: [],
"id": "sftest",
"type": "org",
"title": "sftest",
"parentSid": 0
}, {
"key": 114581250646592,
pathKeys: [],
"id": "sftest1",
"type": "org",
"title": "sftest1",
"parentSid": 0
}, {
"key": 114596497031744,
pathKeys: [],
"id": "sftest2",
"type": "org",
"title": "sftest2",
"parentSid": 0
}, {
"key": 116697090073152,
pathKeys: [],
"id": "sftest3",
"type": "org",
"title": "sftest3",
"parentSid": 0,
"children": [{
"key": 119797568778816,
pathKeys: [],
"id": "147006679814720",
"type": "org",
"title": "sftest4",
"parentSid": 116697090073152
}]
}, {
"key": 120238754472512,
pathKeys: [],
"id": "147448661918272",
"type": "org",
"title": "我测试的数据源",
"parentSid": 0
}, {
"key": 120240105521728,
pathKeys: [],
"id": "147450012979776",
"type": "org",
"title": "test-001",
"parentSid": 0
}];

 getPathKeys(data) {
    if (!Array.isArray(data)) {
        return data;
      }
      const run = (arr, pathKeys) => {
        if (!Array.isArray(arr)) {
          return;
        }
        return arr.map(item => {
          if (Array.isArray(item.children)) {
            item = {
              ...item,
              children: run(item.children, [...pathKeys, item.key]),
            };
          }
          return {
            ...item,
            pathKeys,
          };
        });
      };
      return run(data, []);
  }
这样返回的数据就是每个children的pathKeys 都会有自己和父节点的key的集合,只要将这个集合赋值defaultExpandedKeys,就可以正常显示了
 
方法二
function findChild(arr, id) {
    for(let i = 0; i < arr.length; i++) {
     const item = arr[i];
if (item.id === id) {
item.expanded= true;
return item;
}
if (item.children) {
const result = findChild(item.children, id);
  if (result) {
console.log(item);
item.expanded = true;
return result;
}
}
    }

}

findChild(spect, '147836344422976'); 很明显你点击展开的时候 将当前的key传进去 将数据也放进去 返回的就是当前的节点展开 都是true了

 
 
这俩方法都是我的枪手给我写的。。。。我。。。。

ant tree 展开key的集合的更多相关文章

  1. Jquery EasyUI Combotree和 EasyUI tree展开所有父节点和获取完整路径

    Jquery EasyUI Combotree展开所有父节点 Jquery EasyUI Combotree获取树完整路径 Jquery EasyUI tree展开所有父节点 Jquery EasyU ...

  2. vue实现两重列表集合,点击显示,点击隐藏的折叠效果,(默认显示集合最新一条数据,点击展开,显示集合所有数据)

    效果图: 默认显示最新一条数据: 点击显示所有数据: 代码: 说明:这里主要是 这块用来控制显示或者隐藏 根据当前点击的  这个方法里传递的index 对应  isShow 数组里的index  ,对 ...

  3. PHP 如何获取二维数组中某个key的集合(高性能查找)

    分享下PHP 获取二维数组中某个key的集合的方法. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码: $user = array( 0 => array( 'id' => 1 ...

  4. EasyUI的tree展开所有的节点或者根据特殊的条件控制展示指定的节点

    展示tree下的所有节点$(function(){ $('#t_funinfo_tree').tree({ checkbox: true, url:"<%=basePath %> ...

  5. 后台返回平铺数据,如何转换成树形json并渲染树形结构,ant tree 异步加载

    如何后台返回对象数组(平铺式) 1.根据字段标识(板块)获取根节点 ### initTreeData(dataOrg){ var resultArr=dataOrg[0] var secArr=[]; ...

  6. Flex tree展开节点问题!

    问题: 使用 for each(var item:XML in menuTree.dataProvider) {     menuTree.expandChildrenOf(item,true);   ...

  7. PHP 获取二维数组中某个key的集合

    本文为代码分享,也是在工作中看到一些“大牛”的代码,做做分享. 具体是这样的,如下一个二维数组,是从库中读取出来的. 代码清单: $user = array( 0 => array( 'id'  ...

  8. ext tree展开时的一些技巧

    加入子节点的时候.我们须要展开父节点.并选中刚加入好的节点. 这时候会有一个问题. 我用的ext-js-4.2起码有一种问题. 节点内部会混乱.要么多加一个. 要么层级会发生故障. 随后我发现一个窍门 ...

  9. PHP根据array_map、array_reduce和array_column获取二维数组中某个key的集合

    http://camnpr.com/php-python/1715.html 巧用array_map()和array_reduce()替代foreach循环

随机推荐

  1. python学习笔记(12)常用模块

    一.模块.包 什么是模块? 模块实质上就是一个python文件,它是用来组织代码的,意思就是说把python代码写到里面,文件名就是模块的名称,test.py test就是模块名称. 什么是包? 包, ...

  2. 在服务器搭建git服务器

    服务端操作 安装Git及创建用户组.用户 123 yum install gitgroupadd gitadduser git -g git 禁止用户git登录 修改/etc/passwd文件: 找到 ...

  3. LeetCode No.70,71,72

    No.70 ClimbStairs 爬楼梯 题目 假设你正在爬楼梯.需要 n 阶你才能到达楼顶. 每次你可以爬 1 或 2 个台阶.你有多少种不同的方法可以爬到楼顶呢? 注意:给定 n 是一个正整数. ...

  4. Visual Studio 2017 Professional 下载

    可以进行Office 2013/2016 VSTO开发 安装平台:Win 7 SP1.Win 10. 下载: VisualStudio2017_Professional.rar

  5. linux下添加行数和修改tab空格数

    在/etc/vimrc文件中添加: set nu set ts=4 保存即可

  6. GitHub之初始化

    1.github上新建repository. 2.本地 mkdir git-init-demo. 3.cd git-init-demo. 4.git clone https://github.com/ ...

  7. python读取配置文件报keyerror-文件路径不正确导致的错误

    - 在其他模块使用反射读取配置文件报错,但是在反射模块中读取GetData.check_list又是正确的 反射模块如下: # get_data.py from API_AUTO.p2p_projec ...

  8. Floyd算法-dp问题

    求结点对之间有负数的距离.限制条件:不允许有包含负权值的边组成的回路. 例子: 1.初始化 其中distance矩阵表示i,j两结点之间的距离. path矩阵,以第一行为例,表示0->0值为n表 ...

  9. Servlet+JSP 对外访问路径配置

    servlet类似 servlet配置为: <servlet>    <servlet-name>Demo01_OutWrite</servlet-name>    ...

  10. Win10+GTX906M+Tensorflow-gpu==2.1.0

    环境 Windows10 GeForce GTX 960M python 3.7.6 tensorflow-gpu==2.1.0 CUDA 10.2 cuDNN v7.9.4.38 for windo ...