1

次の関数のパフォーマンスが非常に悪いようです。

treeView.append(children, parent);

ここで、 treeViewは Kendo UI の Treeview、は子のコンテナ ノード、子約 150 個の新しいノードの配列です (私のシナリオ)。

そして、このコードは 7 秒以上実行されます。

追加機能はアイテムのコレクションに対して適切に実装されていないと思います。そのため、jQuery を介して html を生成するいくつかの回避策があるかもしれませんが、Kendo UI Treeview は、新しいノードの将来の展開イベントを正しく処理するために、新しいノードについても認識している必要があります。上記のコードのパフォーマンスを改善する方法はありますか?

ありがとう、イホール

4

2 に答える 2

2

この問題が発生した場合:

最終的に、Kendo UI のソース コードを調査し、元の投稿の行の代わりに次のコードを使用しました。

 treeView.dataItem(parent).children.data(children)

私のシナリオではうまくいきました。

于 2012-11-30T14:30:59.393 に答える
1

パフォーマンスはかなり相対的な用語です。もちろん、7 秒かかる場合は、良いパフォーマンスではありません。私のコンピューターでは、append150 個の新しいノードに約 1 秒かかりましたが、いずれにせよ、いくつかの改善点を提案するかもしれません。

appendノードを 1 つずつどのように処理しますか?

for (var i = 0; i < 150; i++) {
    var added = { text:"node" + i };
    tree.append(added, parent);
}

代わりにこれを試してください(追加するすべてのノードで配列を構築してから呼び出しappendます):

var added = [];
for (var i = 0; i < 150; i++) {
    added.push({ text: "node" + i });
}
tree.append(added, parent);

私のコンピューターでは、1105ミリ秒から787ミリ秒になりました。それほどではありませんが...

しかし、これはレンダリングに必要な時間ではなく、ノードを挿入する時間です。あなたの問題appendですか、それとも画面に表示されますか?

于 2012-11-27T16:32:42.993 に答える