2008-10-11 14 views

Respuesta

1

Finalmente encontré una respuesta en sus foros. Para cualquier persona interesada es aquí:

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

No sé Ext, pero supongo que tienen la abstracción DOM que podrían hacer que sea más fácil. Un equivalente en Prototipo sería algo así como:

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

A menos tree.root se refiere a un objeto de colección en lugar de nodo DOM raíz del árbol, pero está pidiendo prestado DOM nombres de los métodos de la API? Eso parece poco probable, especialmente para una biblioteca JS moderna.

3

En mi caso, mi árbol Ext tiene un nodo raíz oculto de tipo AsyncTreeNode. Si quiero borrar el árbol y repoblar desde el servidor, es bastante simple:

tree.getRootNode().reload(); 
0

me encontré con un problema similar y la solución que ocurrió fue que 'etiqueta' del nodo no ha de haber cargado cuando se derrumbó obligando así a una recarga cuando fue vuelto a expandir .

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

En Ext JS 4:

si desea volver a cargar los datos del panel de árbol, es necesario recargar la tienda de árbol:

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

donde treeId es el id de la árbol. Si tiene una identificación de tienda, puede usar load() directamente en la identificación de la tienda.

para eliminar todos los nodos hijos:

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

Sin embargo, la eliminación de nodos secundarios no es necesaria para la recarga de los nodos del árbol de su tienda.

Cuestiones relacionadas