0

我正在使用 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]

ETC

有谁知道这是否可以使用 dijit Tree 来实现,如果可以,有任何指针吗?

4

1 回答 1

0

在文档中挖掘之后,我找到了一种方法来做到这一点。这并不简单,所以我想我会分享。 此页面有一个示例,说明如何使用富文本标签而不是仅显示文本来显示树节点。这涉及声明您自己的继承自 Tree._TreeNode 的类,允许您控制它的创建。可以使用相同的技术。

创建树时,我重写了 _createTreeNode 函数,如下所示:

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

在我的商店中,我添加了一个对象来表示我想要内联显示的内容并给它一种“内容”类型。

我创建了一个继承自 Tree._TreeNode 的类,如下所示:

定义([“dojo/_base/declare”、“dojo/_base/lang”、“dojo/dom”、“dojo/dom-construct”、“dojo/on”、“dijit/form/Button”、“dijit/ Tree" ], function (declare, lang, dom, domConstruct, on, Button, Tree) { return declare("my/ui/platforms/desktop/parts/LayerManagerContentNode", [Tree._TreeNode], { // 摘要:/ / ...

    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 以隐藏通常显示的内容,瞧,它起作用了!

我敢说有更好的方法可以做到这一点,所以如果有人出现并拥有一个,请添加它。

于 2014-05-23T14:57:01.403 回答