问题描述
现在需要动态的去加载一些节点的信息如 : 树的初始化只加载了1,2层然后当我点击一个按钮 我需要展开3 4 5层肯定是先展开3层 然后3层加载完成后再加载4层 再5层查询了API的一些资料 一些如expand() load的方法都为异步加载目前是一个循环加载3 4 5然后是加载了3层 循环马上去调用4层 出现了null 而抛异常 在方法上写上同步貌似也没用 求各位亲帮忙了! 问题补充:主要是一个层级的关系 我在树上做一个模糊的查询功能。如初始化加载出了 1,2层,然后我模糊查询的内容是在第6层,那么就需要以此展开 3 4 5层 5为4的子节点,4为3的子节点 这样!
解决方案
你是异步加载的,需要在3加载完之后在回调方法里在循环掉4,在4的回调方法里循环掉5
解决方案二:
给你看下我的代码,我的是基于Ext2.2的,我想4.0的应该也有此方法吧 /*定义功能菜单树*/ var root = new Ext.tree.AsyncTreeNode({ text : root_menuname, expanded : true, id : '00' }); var menuTree = new Ext.tree.TreePanel({ id:'leafMenuTree', loader : new Ext.tree.TreeLoader({ baseAttrs : {}, dataUrl : 'menu/treelist' }), root : root, autoScroll : false, animate : false, useArrows : false, border : false });当点击id:00的根节点,就会向dataUrl : 'menu/treelist'传一个node = 00 的参数,根据父结点等于00,返回下一级结点,返回格式按Ext Tree要求的格式返回。然后点击返回的一级菜单时,同样的处理,传一个node值为此菜单id的参数给menu/treelist处理。。。依此类推!