7

子ノードを動的にロードするExt.tree.TreePanelを作成できましたが、ツリーをクリアして新しいデータをロードするのに苦労しています。誰かがこれを行うためのコードを手伝ってくれますか?

4

7 に答える 7

6

ExtJS の第一人者である Saki のすばらしいブログから。

while (node.firstChild) {
    node.removeChild(node.firstChild);
}

http://blog.extjs.eu/know-how/how-to-remove-all-children-of-a-tree-node/

于 2009-03-16T09:58:08.107 に答える
4

Ext JS 4 では:

ツリー パネルのデータをリロードする場合は、ツリー ストアをリロードする必要があります。

getCmp('treeId').getStore().load();

ここで、treeId はツリーの ID です。ストア ID がある場合は、ストア ID に対して直接 load() を使用できます。

すべての子ノードを削除するには:

getCmp('treeId').getRootNode().removeAll();

ただし、ストアからツリー ノードをリロードするために、子ノードを削除する必要はありません。

于 2011-07-04T14:51:15.463 に答える
3

私の場合、Ext ツリーには AsyncTreeNode タイプの非表示のルート ノードがあります。ツリーをクリアしてサーバーから再作成する場合は、非常に簡単です。

tree.getRootNode().reload();
于 2008-10-11T22:16:29.893 に答える
1

私はついに彼らのフォーラムで答えを見つけました。興味のある方はこちら:

if (tree)
{
    var delNode;
    while (delNode = tree.root.childNodes[0])
        tree.root.removeChild(delNode);
}
于 2008-10-11T02:25:37.083 に答える
1

を使用するだけnode.removeAll()で、このノードからすべての子ノードを削除できます。

http://docs.sencha.com/extjs/4.2.1/#!/api/Ext.data.NodeInterface-method-removeAll

于 2013-06-28T02:10:11.273 に答える
0

私は同様の問題に遭遇し、私が思いついた解決策は、ノードが折りたたまれたときにロードされていないことに「タグを付ける」ことでした。

listeners: {
   collapsenode: function(node){
   node.loaded = false;
},
于 2009-09-11T18:51:26.163 に答える
-1
if (tree) { var delNode; while (delNode = tree.root.childNodes[0]) tree.root.removeChild(delNode); }

私は Ext を知りませんが、それを容易にする DOM 抽象化を持っているのではないかと推測しています。プロトタイプで同等のものは次のようになります。

tree.root.immediateDescendants().invoke('remove'); // or
tree.root.select('> *').invoke('remove');

ツリーtree.rootのルート DOM ノードではなくコレクション オブジェクトを参照している場合を除き、DOM API メソッド名を借用していませんか? これは、特に最新の JS ライブラリの場合、非常にありそうにないようです。

于 2008-10-11T05:13:41.517 に答える