2008-10-11 9 views

Répondre

1

J'ai enfin trouvé une réponse dans leurs forums. Pour les personnes intéressées, il est ici:

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

Je ne sais pas Ext, mais je devine qu'ils ont l'abstraction DOM qui pourrait rendre cela plus facile. Un équivalent prototype serait quelque chose comme:

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

À moins tree.root fait référence à un objet de collection plutôt que le nœud DOM racine de l'arbre, mais emprunte les noms de méthode API DOM? Cela semble vraiment improbable, surtout pour une bibliothèque JS moderne.

3

Dans mon cas, mon arbre Ext a un nœud racine caché de type AsyncTreeNode. Si je veux effacer l'arbre et repeupler à partir du serveur, il est assez simple:

tree.getRootNode().reload(); 
0

je suis tombé sur un problème similaire et la solution que je suis venu avec était de « tag » le noeud a avoir pas chargé quand il a été effondré forçant ainsi un reload quand il a été augmenté de nouveau .

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

Ext JS 4:

si vous voulez recharger les données du panneau de l'arborescence, vous devez recharger le magasin d'arbre:

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

où ArbreID est l'identifiant du arbre. Si vous avez un identifiant de magasin, vous pouvez directement utiliser load() sur l'identifiant du magasin.

pour supprimer tous les nœuds enfants:

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

Toutefois, la suppression des nœuds enfants n'est pas nécessaire pour recharger les nœuds de l'arbre de son magasin.

Questions connexes