Ext.jsTree 向子节点添加叶子节点
// 定义搜索节点树结构Store
const nodeStore = Ext.create('Ext.data.TreeStore',
{
autoLoad : true,
id : 'nodeStoreTreeId',
fields : ['index', 'nodeId', 'name_or_index', 'to_node', 'type'],
proxy : {
type : 'memory',
reader : {
type : 'json',
}
},
root : {
text : '根节点',
expanded : true
},
folderSort : true,
});
// 搜索子节点展示树结构面板
const nodeTreePanel = Ext.create('Ext.tree.TreePanel',{
title : '子节点树结构图',
id : `${data.title}NodeTreeId`,
width : '45%',
height : 400,
region : 'east',
collapsed : false,
collapsible : false,
closeAction : 'hide',
useArrows : true,
rootVisible : false,
autoScroll : true,
autoShow : true,
animate : true,
store : nodeStore,
listeners : { // 主要就是这个监听事件
// 展开之后触发 afteritemexpand
'afteritemexpand' : function(itme, index)
{
// 准备的参数或者其他数据,我这边需要一个nodeId
const nodeId = itme.data.nodeId;
// 通过这个nodeId获得当前节点下的子节点数据。
const Result = heapNodeSerialize(jsHeapSnapShot[data.title], nodeId);
// 处理添加新的子节点
for (let i = 0; i < itme.parentNode.childNodes.length; i++)
{
const everyChildNode = itme.parentNode.childNodes[i];
const everyChildNodeId = everyChildNode.data.nodeId;
if (everyChildNodeId == nodeId)
{
// 首次展开需要添加子节点。
for (let j = 0; j < everyChildNode.parentNode.childNodes.length; j++)
{
const everyGrandsonNode = everyChildNode.parentNode.childNodes[j];
// 已经加载过子节点的值,后面再次展开无需再加载。
if ((everyGrandsonNode.data.nodeId == nodeId) && everyGrandsonNode.childNodes.length == 0)
{
// 将叶子节点数据设置到子节点里面。
// 前面都是数据处理,这个才是向子节点添加子节点的地方。
everyChildNode.appendChild(Result);
}
}
}
}
}
}
});
// 效果图

图·1
// 期间遇到的问题
1、之前将使用的是itemclick事件,后来换成了 afteritemexpand 点击展开后触发事件,监听itemclick事件
存在使用不怎么友好的问题。
2、当遇到子节点被重复展开触发事件,会出现前面其他子节点同样的子节点和现在的子节点一样的节点
数据会出现乱窜问题。(这里可能有点绕-看下图·2):决解方案:在已经展开的节点上面做记录,如果
重复展开并且后面的数据是一样的,可直接return。这样避免了数据乱窜的问题。

图·2
Ext.jsTree 向子节点添加叶子节点的更多相关文章
- MySQL 树形结构 根据指定节点 获取其下属的所有子节点(包含路径上的枝干节点和叶子节点)
背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有子节点(包含路径上的枝干节点和叶子节点) 枝干节点:如果一个节点下还有子节点,则为枝干节点. 叶子节点:如果一个节点下不再有子节点 ...
- Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框
Jquery EasyUI Combotree只能选择叶子节点且叶子节点有多选框 Jquery EasyUI Combotree单选框,Jquery EasyUI Combotree只能选择叶子节点 ...
- 找出所有从根节点到叶子节点路径和等于n的路径并输出
//找出所有从根节点到叶子节点路径和等于n的路径并输出 Stack<Node> stack = new Stack<Node>(); public void findPath( ...
- 求二叉树的深度,从根节点到叶子节点的最大值,以及最大路径(python代码实现)
首先定义一个节点类,包含三个成员变量,分别是节点值,左指针,右指针,如下代码所示: class Node(object): def __init__(self, value): self.value ...
- Z-tree 统计每一父节点的叶子节点数(看这一篇就够了)
最近刚走出校园的我找到了第一份工作,在入职考核中就遇见了一道Z-tree的试题 这道题目本身是不难的,但是我第一次接触这个插件而且还把解决问题的方向搞错了,弄的我好几天都很难受. 弄得我都开始怀疑人生 ...
- 根节点到叶子节点路径之和为target
//递归吧,但是在递归到底的条件上要判断好,比如说完整路径是到叶子节点,也就是说左右子节点都为空,并且这时候的root.val==target表示找到了一个list,再返回. 但是因为我并没有直接就用 ...
- 红黑树之 原理和算法详细介绍(阿里面试-treemap使用了红黑树) 红黑树的时间复杂度是O(lgn) 高度<=2log(n+1)1、X节点左旋-将X右边的子节点变成 父节点 2、X节点右旋-将X左边的子节点变成父节点
红黑树插入删除 具体参考:红黑树原理以及插入.删除算法 附图例说明 (阿里的高德一直追着问) 或者插入的情况参考:红黑树原理以及插入.删除算法 附图例说明 红黑树与AVL树 红黑树 的时间复杂度 ...
- MySQL 树形结构 根据指定节点 获取其所有叶子节点
背景说明 需求:MySQL树形结构, 根据指定的节点,获取其下属的所有叶子节点. 叶子节点:如果一个节点下不再有子节点,则为叶子节点. 问题分析 1.可以使用类似Java这种面向对象的语言,对节点集合 ...
- LC: 404.左叶子节点
计算给定二叉树的所有左叶子之和. 示例: / \ 9 20 / \ 15 7 ,所以返回 24 解析 我们需要找到这样的节点 属于叶子节点 属于父节点的左子节点 方法一:用栈,dfs遍历,用全局变量r ...
随机推荐
- TensorFlow(十一):递归神经网络(RNN与LSTM)
RNN RNN(Recurrent Neural Networks,循环神经网络)不仅会学习当前时刻的信息,也会依赖之前的序列信息.由于其特殊的网络模型结构解决了信息保存的问题.所以RNN对处理时间序 ...
- FF,NF,BF
设计一个可变式分区分配的存储管理方案.并模拟实现分区的分配和回收过程. 对分区的管理法可以是下面三种算法之一: 首次适应算法 循环首次适应算法 最佳适应算法 对于测试样例 : 首地址 大 ...
- 记一次netty的Hadoop和elasticsearch冲突jar包
在一个项目中同时使用hbase和elasticsearch出现netty的jar包冲突的问题 事件: 在同一maven项目中使用hbase的同时又用了es 程序运行后出错 java.lang.NoSu ...
- arch linux下网易云音乐运行没反应,只能使用root用户运行
本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/netease_music_can_not_open 最近打开网易 ...
- [Shell]CVE-2019-0708漏洞复现及修复补丁
0x01 漏洞原理 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广,windows2003.windows2008.windows2008 R2.windows 7 ...
- mybatis xml中是sql语句报错: Error creating document instance. Cause: org.xml.sax.SAXParseException: The
最近项目折腾了老半天,找了资料才知道是这么回事... 因为语句中有一个小于号“<”,在XML中,会被当成一个页面元素来解析,不会处理为mysql的SQL语句的组成部分,修改如下: 1.在xml的 ...
- nodejs配置QQ企业邮箱
安装模块 npm install -g nodemailer npm install -g nodemailer-smtp-transport 代码示例 var nodemailer = requir ...
- Leetcode题目617:合并二叉树(递归-简单)
题目描述: 给定两个二叉树,想象当你将它们中的一个覆盖到另一个上时,两个二叉树的一些节点便会重叠. 你需要将他们合并为一个新的二叉树.合并的规则是如果两个节点重叠,那么将他们的值相加作为节点合并后的新 ...
- linux的常见目录
常见的目录和作用 目录名 目录名的作用 /bin/ 存放系统命令的目录,普通用户和root都使用,不过放在bin/命令下的单用户模式也可执行 /sbin/ 保存于系统环境相关的命令,只有root可以使 ...
- docker tcp配置
1. Ubuntu Docker deamon监听tcp端口设置 https://www.jianshu.com/p/e278b0e44e1b 2. Centos https://www.cnblog ...