dojo dijit.tree getChildren() не возвращает все узлы дерева
Я использую dojo 1.10.4 и заметил, что функция getChildren() dijit.tree возвращает только дочерние (древовидные) узлы, развернутые (отображаемые и видимые) в дереве dijit.tree. Как я могу перебрать все узлы дерева dijit.tree независимо от того, отображаются они или нет?
- Я могу легко пройтись по всем основным элементам хранилища данных, но я пытаюсь найти конкретные узлы дерева, чтобы я мог стилизовать их, используя "node.labelNode.style".
- Я мог бы программно развернуть все узлы dijit.tree до вызова getChildren(), но я хотел бы сохранить представление пользователя о dijit.tree.
Любые предложения с благодарностью.
1 ответ
Решение
Я не уверен, что это то, что вам нужно, но именно так мы расширяем все узлы, что похоже на вашу задачу, получая все узлы из дерева. Я верю, что с простой модификацией вы сможете достичь своей цели
Предположим, что у нас есть функция для расширения узлов дерева, которую мы будем называть
this._expandTree(this._tree.rootNode);
и сама функция
_expandTree: function (node) {
if (node.hasChildren()) {
var currentNode;
for (var i = 0; i < node.getChildren().length; i++) {
currentNode = node.getChildren()[i];
this._expandTree(currentNode);
}
}
},