wuxinmingcs15 2010-12-13 16:14
浏览 254
已采纳

ext tree

ext tree中有个expandAll的方法,怎么样知道全部展开完成呢
treeloader里面可以通过url配置tree的数据源,那么在js中怎么样才能得到那个json字符串呢(只加载一次)

  • 写回答

1条回答 默认 最新

  • cyrilluce 2010-12-13 17:13
    关注

    既然你的树数据[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]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?