2008-10-11 14 views

Odpowiedz

1

W końcu znalazłem odpowiedź na ich forach. Dla wszystkich zainteresowanych jest tutaj:

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

nie wiem Ext, ale zgaduję, że mają DOM abstrakcji, które mogłyby sprawić, że łatwiej. Równoważny w Prototype byłoby coś jak:

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

ile tree.root odnosi się do obiektu kolekcji zamiast tego głównego węzła drzewa DOM, ale pożycza DOM nazwy metod API? To wydaje się mało prawdopodobne, szczególnie w przypadku nowoczesnej biblioteki JS.

3

W moim przypadku moje drzewo ext ma ukryty węzeł główny typu AsyncTreeNode. Jeśli chcę wyczyścić drzewo i ponownie pobrać z serwera, jest to bardzo proste:

tree.getRootNode().reload(); 
0

uruchomiony do podobnego problemu, rozwiązanie, które pojawiły się z było dodawanie do węzła nie mający umieszczone kiedy zapadnięciu zmuszając przeładowania, gdy ponownie rozszerzone .

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

W Ext JS 4:

jeśli chcesz odświeżyć dane w panelu drzewa, trzeba przeładować sklep drzewa:

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

gdzie treeId jest identyfikator drzewo. Jeśli masz identyfikator sklepu, możesz bezpośrednio użyć load() na id sklepu.

usunąć wszystkie węzły potomne:

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

Jednak usunięcie węzłów potomnych nie jest konieczne do przeładunku węzły drzewa z jego sklepu.