2017-10-07 11 views
0

J'essaie de définir l'icône d'un nœud dans fancytree. J'ai trouvé dans les exemples en ligne que je peux utiliser renderNode de le faire:Comment obtenir tous les enfants d'un noeud dans fancytree?

$("#tree").fancytree({ 
    // Image folder used for data.icon attribute. 
    imagePath: "skin-custom/", 
    // icon: false, 
    renderNode: function(event, data) { 
    // Optionally tweak data.node.span 
    var node = data.node; 
    // Some logic here 
    } 
}); 

Je voudrais passer par les enfants de ce nœud et si elles sont toutes sélectionnées, définir une icône spécifique. Mais quand je reçois les enfants, je n'obtiens que les enfants de premier niveau, ce qui signifie que je n'obtiens pas les enfants des enfants du nœud. Y a-t-il un moyen d'y parvenir? Merci d'avance

Répondre

1

Le rappel renderNode est appelé uniquement sur demande, par ex. pour les nouveaux nœuds, lorsqu'un statut change ou lorsque node.renderStatus() est appelé.

si vous avez besoin de calculer les icônes que vous pouvez utiliser le icon option:

$(...).fancytree({ 
    icon: function(event, data) { 
     return data.node.isSelected() ? "a" : "b"; 
    }, 
    ... 
}); 

Vous pouvez utiliser ce modèle pour itérer sur tous les nœuds:

node.visit(function(n){ 
    console.log(n.isSelected()); 
}); 
+0

Merci beaucoup pour votre réponse. Je vais vérifier l'option d'icône pour sûr. J'ai déjà utilisé le 'node.visit (fonction (n) { console.log (n.isSelected()); });' fonction. Mais il ne parcourt pas tous les nœuds. Il ne fait qu'itérer la racine et les enfants de premier niveau. Je ne reviendrai pas Les enfants des enfants de la racine. Mais Encore merci beaucoup :) – arvind

+0

La méthode de visite traversera ** tous les ** descendants (sauf pour les noeuds paresseux déchargés bien sûr) – mar10