Existe-t-il un bon moyen de développer/fermer tous les nœuds extensibles dans un dijit.Tree
?Extension de tous les nœuds dans dijit.Tree
Pour ceux qui recherchent une réponse, mettez ceci dans votre code d'initialisation:
var treeControl = new dijit.Tree({
model: treeModel,
expandAll: function() {
// summary:
// Expand all nodes in the tree
// returns:
// Deferred that fires when all nodes have expanded
var _this = this;
function expand(node) {
_this._expandNode(node);
var childBranches = dojo.filter(node.getChildren() || [], function(node) {
return node.isExpandable;
});
var def = new dojo.Deferred();
defs = dojo.map(childBranches, expand);
}
return expand(this.rootNode);
}
});
Au moins, cela fonctionne pour moi. Et vous pouvez faire la même chose avec collapseAll()
où vous avez seulement besoin de basculer _this._expandNode(node);
avec _this._collapseNode(node);
Y at-il une raison pour laquelle il a obtenu retiré? Et aussi, cela ne semble pas fonctionner lors de l'initialisation d'un arbre. Nous emballons toute la bibliothèque dojo, donc je n'ai pas d'accès direct sur le fichier Tree.js lui-même. Cependant, je peux créer des méthodes supplémentaires quand je crée un 'nouvel arbre ', mais alors' _expandNode()' n'existe pas ... Des suggestions? – peirix
semble avoir eu quelques problèmes avec la fonction de rappel. Je viens de supprimer cela et j'ai fait un appel récursif sur 'expand()' et presque identique 'collapse()' en fonction du lien que vous avez posté, et maintenant cela fonctionne. – peirix
Aucune raison particulière, l'ajout de ces deux méthodes aurait gonflé le code et exigé plus de tests (et je pensais que nous aurions encore besoin de l'indicateur expandOnLoad), et il n'était pas clair que quiconque voulait développer/contracter dynamiquement ... Je suppose que vous faites :-) Si vous déposez un ticket d'amélioration (à http://bugs.dojotoolkit.org), je vais ajouter ces méthodes. –