2008-10-11 61 views

回答

1

我終於在論壇上找到了答案。對於任何有興趣它是在這裏:

if (tree) 
{ 
    var delNode; 
    while (delNode = tree.root.childNodes[0]) 
     tree.root.removeChild(delNode); 
} 
-1
if (tree) { var delNode; while (delNode = tree.root.childNodes[0]) tree.root.removeChild(delNode); } 

我不知道分機,但我猜測他們有DOM抽象可能簡化這個過程。在原型的等效會是這樣的:

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

除非tree.root是指一個集合對象,而不是樹的根DOM節點,但借款DOM API方法的名字呢?這似乎不太可能,特別是對於現代JS庫。

3

在我的情況下,我的Ext樹有一個類型爲AsyncTreeNode的隱藏根節點。如果我想清除樹並從服務器重新填充,這很簡單:

tree.getRootNode().reload(); 
0

我遇到了類似的問題,我想出了一個解決辦法是「標籤」的節點,當它被倒塌從而迫使一重裝具有不加載,當它再次擴大。

listeners: { 
    collapsenode: function(node){ 
    node.loaded = false; 
}, 
3

在Ext JS的4:

如果要重新加載樹面板中的數據,您需要重新加載樹店:

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

其中treeId是的標識樹。如果您有商店ID,則可以直接在商店ID上使用load()。

刪除所有子節點:

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

然而,移除子節點沒有必要從它的店重裝樹節點。