在Ext.tree.TreePanel中,当我们加载树时,没有任何事件可以检查是否所有树节点都已完全加载

In Ext.tree.TreePanel, when we load the tree, there in no event to check if ALL the tree-nodes are completely loaded

本文关键字:加载 是否 检查 树节点 事件 任何 我们 tree Ext TreePanel      更新时间:2023-09-26

在Ext.tree.TreePanel中,当我们加载树时,没有任何事件可以检查是否所有树节点都已完全加载。

我们所做的是,我们递归地进行异步调用,并让节点根据已将属性扩展为true的节点进行扩展。我们怎样才能找到所有的asyc。调用是否已完成,treePanel是否已完全加载?

背后的想法是,当树面板的节点完全加载时,我们必须启用一个按钮,表示该树可供最终用户进行进一步操作。

Ext.Ajax.request(…)返回一个对象,如果该对象包含xhr属性,则请求不会完成。

var req = Ext.Ajax.request(..);
if(!req.xhr)
   //request is finished
else 
   // request is not finished

尽管我建议在每次请求时返回节点的总数。所以我会返回一个json,如下所示:

{
    data: [...], // treenodes
    totalCount: 100
}

现在,如果您的树存储已经包含所有节点,那么您可以检查每个请求成功函数。

感谢您@JuHwon的输入。然而,在这种情况下,你并不适合。因为Ajax调用是开箱即用的,正如我所提到的,树触发器调用是基于属性的(据我现在回忆,可能是isSelectable=true)。因此,为了实现这个用例,我使用了setTimeOut和clearTimeOut方法来动态推送2000毫秒的延迟。我没有找到更接近它的方法。