Comment faire pour supprimer un nœud à partir d'un Poste TreePanel si le nœud n'a pas été rendu

J'ai constaté que je ne peux pas supprimer les nœuds qui n'ont pas été rendus encore. Le code suivant montre ce que je veux dire. J'ai couru à partir du Chrome (et de Firebug) de la ligne de commande alors que sur http://dev.sencha.com/deploy/dev/exa...dow/hello.html (depuis cette page a ext préchargé)

J'ai tapé chaque état séparément pour s'assurer il n'y a pas de problèmes avec les opérations asynchrones (même si l'arbre de données est en mémoire)

Ext.getBody.update('');
//Tree with preloaded nodes in memory 
var tree = new Ext.tree.TreePanel({ 
   renderTo: Ext.getBody(),  
   width: 300,  
   height: 500,  
   rootVisible: false, 
   loader: new Ext.tree.TreeLoader({preloadChildren:true}), 
   root: new Ext.tree.AsyncTreeNode({ 
     expandend: true, 
     children: [ 
        {text: 'Folder 1', id: 'folder1', leaf: false, children: [ 
            {text: 'File 1', id: 'file1', leaf: true}, 
            {text: 'File 2', id: 'file2', leaf: true} 
        ]} 
     ] 
   }) 
}); 

//Try to delete 'File 1', notice that the folder has never been expanded 
tree.getRootNode().childNodes[0].childNodes[0].remove(true); 

//Expand the node and see that 'File 1' is still there 
tree.getRootNode().childNodes[0].expand(); 

//Delete the first child 1 again, it works now that it's been rendered 
tree.getRootNode().childNodes[0].childNodes[0].remove(true);

Des suggestions sur ce qu'il faut faire?

RÉPONSE

var nodeToRemove = tree.getRootNode().childNodes[0].childNodes[0];
if (!nodeToRemove.rendered) {
    var children = node.parentNode.attributes.children;
    Ext.each(children, function(child, index){
        if (child.id == nodeToRemove.id) {
            chilren.splice(index, 1);
            return false;
        }
    }) ;
} else {
    nodeToRemove.remove(true);
}
  • Pourquoi inclure des noeuds si vous voulez les supprimer de toute façon?
  • Ce n'est évidemment pas le code utilisé, c'est juste une réduction. L'arbre est une vue de données, à d'autres endroits dans le code peut supprimer les fichiers", avant de leur "dossier" est développée dans l'arbre.
InformationsquelleAutor Juan Mendes | 2011-01-31