Есть ли способ расширить/закрыть все расширяемые узлы в dijit.Tree
?Расширение всех узлов в dijit.Tree
Для тех, кто ищет ответ, это в вашем коде инициализации:
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);
}
});
По крайней мере, это работает для меня. И вы можете сделать то же самое с collapseAll()
, где вам нужно всего лишь переключить _this._expandNode(node);
с _this._collapseNode(node);
Существует причина, он получил вынимают? А также, похоже, не работает над инициализацией дерева. Мы упаковываем всю библиотеку додзё, поэтому у меня нет прямого доступа к самому файлу Tree.js. Тем не менее, я могу создавать дополнительные методы при создании «нового дерева», но тогда '_expandNode()' не существует ... Любые предложения? – peirix
Кажется, у меня возникли проблемы с функцией обратного вызова. Я просто удалил это и сделал рекурсивный вызов 'expand()' и почти идентичный 'collapse()' в соответствии с опубликованной вами ссылкой, и теперь он работает. – peirix
Нет особой причины, добавив эти два метода, чтобы раздуть код и потребовать больше тестирования (и я думал, что нам еще нужен флаг expandOnLoad тоже), и просто не было ясно, что кто-то хочет динамически расширять/заключать контракты ... Я думаю, вы это делаете :-) Если вы добавите билет на повышение (на http://bugs.dojotoolkit.org), я добавлю эти методы. –