2008-10-11 22 views

Antwort

1

Ich fand endlich eine Antwort in ihren Foren. Für alle Interessierten ist es hier:

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); } 

ich nicht Ext weiß, aber ich vermute, dass sie DOM Abstraktion, die das leichter machen könnte. Ein Äquivalent in Prototype wäre so etwas wie sein:

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

Sofern tree.root bezieht sich auf ein Sammelobjekt, anstatt die Wurzel DOM-Knoten des Baumes, sondern leiht DOM API Methodennamen? Das erscheint besonders unwahrscheinlich für eine moderne JS-Bibliothek.

3

In meinem Fall hat meine Ext-Struktur einen versteckten Wurzelknoten vom Typ AsyncTreeNode. Wenn ich den Baum und repopulate vom Server gelöscht werden soll, dann ist es ziemlich einfach:

tree.getRootNode().reload(); 
0

I lief in ein ähnliches Problem und die Lösung kam ich mit war der Knoten zu ‚Tag‘ nicht geladen ist zu haben, wenn es damit zusammengebrochen war ein Neuladen zwingen, wenn es wurde wieder ausgebaut .

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

In Ext JS 4:

wenn Sie die Daten des Baumes Platte neu zu laden möchten, können Sie den Baum Speicher neu zu laden müssen:

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

wo treeID die ID der ist Baum. Wenn Sie eine Geschäfts-ID haben, können Sie direkt load() für die Geschäfts-ID verwenden.

alle untergeordneten Knoten zu entfernen:

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

jedoch Knoten Kind Entfernen zum Nachladen des Baumknoten aus seinem Speicher nicht erforderlich ist.