ext tree中有个expandAll的方法,怎么样知道全部展开完成呢
treeloader里面可以通过url配置tree的数据源,那么在js中怎么样才能得到那个json字符串呢(只加载一次)
既然你的树数据[b]只加载一次[/b],也就是说只请求一次根节点,所有的节点数据都一次性全加载下来,那么可以在根节点的expand事件响应后,[b]延后1毫秒执行[/b],这时肯定都展开完毕(前提是未开启动画)。
因为往后的所有节点加载都是本地进行了,会在一个JS任务内执行完毕,而不像ajax那样设定回调后中止,请求结束后重新执行。延后1毫秒的话,一定会在全部展开后才执行它。
(参考JavaScript单线程性质及执行队列)
[code="js"]
tree.getRootNode().on("expand", function(){}, scope, {single:true, delay:1});
[/code]
想要取得那个json字串,只能重写TreeLoader了,稍微扩展下:
[code="js"]
var xxx = new Ext.tree.TreePanel({
...
loader : new Ext.tree.TreeLoader({
handleResponse : function(response){
// 自己处理response.responseText
Ext.tree.TreeLoader.prototype.handleResponse.apply(this, arguments);
}
}),
...
});
[/code]