这次有个功能 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学习笔记:python的Bokeh 基本绘图

    使用 Bokeh 绘图时,其大部分绘图功能是由 bokeh plotting 完成的,所以我们一 般至少要导入自gure 及 show 这两个函数 : Bokeh 绘制的图形是在浏览器中显示的, 创建 ...

  2. 系统学习javaweb1----HTML语言1

    自我感受:HTML语言没想到也有这么大的学问,竟然能通过超链接标签直接访问百度,这可让我大吃一惊,我也得反思一下自己,上学期的java纯是混过来的,没有系统的学习过,感觉能通过期末考试都是侥幸,接下来 ...

  3. 读写分离(AMOEBA)

    博主本人平和谦逊,热爱学习,读者阅读过程中发现错误的地方,请帮忙指出,感激不尽 1. 环境准备: 1.1新增一台虚拟机 amoeba:192.168.247.80 架构(使用图片源自其它博文): 1. ...

  4. Margin of Error|sample size and E

    8.3 Margin of Error 由该公式可知: To improve the precision of the estimate, we need to decrease the margin ...

  5. VDMA搭建视频通路总结

    全局观查,对整个工程的搭建的关键是要保证PL部分搭建成功,PS部分搭建成功,而且两者配合的很好. 我理解的PL部分涉及到模块的组合以及模块或者IP之间的逻辑的整理,PL部分困扰我比较久的是自动生成的w ...

  6. LeetCode Day 8

    LeetCode0015 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 例如, 给 ...

  7. 再举个webstrom 正则应用例子。

    要将 "_behavior_chineseobj":{ "场所内网IP地址":"IP_ADDRESS", "源外网IPv4地址&q ...

  8. [转]<版本二>写代码的小女孩

    天冷极了,下着雪,又快黑了.这是一年的最后一天——大年夜.在这又冷又黑的晚上,一个乖巧的小女孩在机房里调试程序.她从家里出来的时候还穿着一件外套,但是有什么用呢?那是一双很大的外套——那么大,不知是哪 ...

  9. python多重逻辑排序

    python有自带的排序sorted函数,而且用reverse =True or False,来控制降序还是升序.但是如果有多个条件需要排序应该如何办呢? L = [(12, 12), (34, 13 ...

  10. 以后的IT路还很长(1)

    以后的IT路还很长(1) 最近有两位兄弟同事离职了,蛮可惜了,在一个战壕一起一.两年了,人各有志嘛!希望他们发展更好些! 目前的公司是个创业型的公司,公司从08年的50来个人,扩张到今年11年400多 ...