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);
                    }
                }
            },
Другие вопросы по тегам