【问题标题】:Extjs improve performance of treenode.appendchild()Extjs 提高了 treenode.appendchild() 的性能
【发布时间】:2014-01-02 14:13:58
【问题描述】:

我正在使用 Extjs 4.2.1。我有一个 bufferedrenderer 树网格,要求将许多子节点附加到特定节点。

这是我的代码

Ext.suspendLayouts();
Ext.getCmp('bufferedTree').getStore().suspendEvents();
for(var i=0;i<node.length;i++){
    node1.appendChild(node[i]);
    nodesArray.push(node[i]);
}
node1.appendChild(nodesArray);
Ext.resumeLayouts(true);
Ext.getCmp('bufferedTree').getStore().resumeEvents();
  • node 是选择要追加的节点
  • node1 是要附加的节点的父节点。

它工作正常,但问题是当要追加的节点数量增加时,追加子节点所需的时间会增加。

有什么办法可以缩短时间吗?

【问题讨论】:

    标签: extjs


    【解决方案1】:

    每个节点添加都会触发布局更新,这会带来性能成本。所以你追加的越多,成本就越高。

    如果您查看appendChild() 的文档,您会注意到您可以附加单个节点或节点数组。我不会在循环的每次迭代中追加,而是创建一个包含您要追加的所有节点的数组,然后将它们作为一个调用追加。这样,布局更新只会发生一次,而不是每个节点添加一次。这几乎肯定会提高性能。

    【讨论】:

    • 您好,我尝试创建节点数组,然后只调用一次 appendchild 方法,但追加 200 个子节点仍然需要 40 秒。
    • 你能提供一个repro case吗?
    猜你喜欢
    • 1970-01-01
    • 2013-08-01
    • 2015-08-09
    • 2017-01-17
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-19
    相关资源
    最近更新 更多