Отображение содержимого в виде дерева диджита

Я использую Dojo и хотел бы создать древовидную структуру. Тем не менее, я хотел бы иметь возможность отображать содержимое в дереве, как только конечный узел в определенной ветви был расширен. например

top
- a branch
-- last item in this branch
    [some content such as a div, span, image etc]
-- another item in this branch
    [some more content]

так далее

Кто-нибудь знает, может ли это быть достигнуто с помощью дерева dijit и, если да, каких-либо указателей?

1 ответ

Покопавшись в документах, я нашел способ сделать это. Это не просто так, думал, что поделюсь. На этой странице приведен пример того, как отобразить узел дерева с расширенной текстовой меткой, а не только с текстом. Это включает в себя объявление вашего собственного класса, который наследуется от Tree._TreeNode, что позволяет вам контролировать его создание. Эту же технику можно использовать.

При создании дерева я переопределяю функцию _createTreeNode следующим образом:

    _createTreeNode: function (args) {
        if (args.item.type === "content") {
            return new LayerManagerContentNode(args);
        } else {
            return new Tree._TreeNode(args);
        }
    }

В моем магазине я добавляю объект для представления контента, который я хочу отображать в строке, и присваиваю ему тип "контента".

Я создаю класс, который наследует от Tree._TreeNode следующим образом:

define (["dojo / _base / декларировать", "dojo/_base/lang", "dojo/dom", "dojo/dom-construct", "dojo/on", "dijit/form/Button", "dijit/ Дерево " ], функция (объявлять, lang, dom, domConstruct, вкл, кнопка, дерево) {возвращать объявлять ("my/ui/platform / desktop / parts / LayerManagerContentNode ", [Tree._TreeNode], {// summary: / /...

    constructor: function () {

    },

    postCreate: function () {

        var button = new Button({
            label: "Test"
        });

        this.domNode.innerHTML = "<div></div>";
        this.domNode.innterText = "";

        button.placeAt(this.domNode, "first");

    }

});

});

в postCreate я создаю кнопку (это было только для тестирования, я, вероятно, создам панель содержимого или что-то для дальнейшего заполнения) для отображения вместо обычного узла дерева. Затем я заменяю узлы дерева innerHTML и innerText, чтобы скрыть то, что обычно отображалось бы, en вуаля, это работает!

Я осмелюсь сказать, что есть более эффективные способы сделать это, поэтому, если кто-то придет и найдет его, добавьте его.

Другие вопросы по тегам