使用dijit树内联显示内容

时间:2014-05-23 10:08:53

标签: dojo dijit.tree

我正在使用Dojo,并希望创建一个类似树的结构。但是,一旦特定分支中的末端节点被扩展,我希望能够在树中显示内容。 e.g。

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 Tree实现这一点,如果有的话,是否有任何指针?

1 个答案:

答案 0 :(得分:0)

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

创建树时,我按如下方式覆盖_createTreeNode函数:

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

在我的商店中,我添加了一个对象来表示我想要内联显示的内容,并为其提供一种内容'。

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

定义([     "道场/ _base /声明&#34 ;,     "道场/ _base /郎&#34 ;,     "道场/ DOM&#34 ;,     "道场/ DOM的构建&#34 ;,     "道场/上&#34 ;,     "的dijit /形式/按钮&#34 ;,     "的dijit /树" ],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替换为隐藏通常显示的内容,瞧,它有效!

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