Dojo - 将dijit添加到已关闭的TitlePane

时间:2011-03-07 12:39:29

标签: javascript dojo

当TitlePane的open属性设置为false时,我无法动态地向内容添加小部件。

例如,以下代码不起作用。

var tp = new dijit.TitlePane({
   title: "Title Pane"
   , content: ""
   , open: false
})

var tabs = new dijit.layout.TabContainer({
   region:"center"
   , content:"Service Details"
   , tabStrip: true
}).placeAt(tp.containerNode);

但是当open属性设置为true时,会出现标签容器。

var tp = new dijit.TitlePane({
   title: "Title Pane"
   , content: ""
   , open: true
})

var tabs = new dijit.layout.TabContainer({
   region:"center"
   , content:"Service Details"
   , tabStrip: true
}).placeAt(tp.containerNode);

当open属性设置为false时,如何将小部件添加到TitlePane?

1 个答案:

答案 0 :(得分:3)

您确定要在以编程方式创建的小部件上正确调用startup吗?以下适用于我opentrue还是false

dojo.require('dijit.TitlePane');
dojo.require('dijit.layout.TabContainer');
dojo.require('dijit.layout.ContentPane');
dojo.ready(function() {
    var tp = new dijit.TitlePane({
        title: "Title Pane",
        content: "",
        open: false
    }).placeAt(dojo.body());


    var tabs = new dijit.layout.TabContainer({
        region: "center",
        content: "Service Details",
        tabStrip: true
    }).placeAt(tp.containerNode);
    tabs.startup();
    tabs.addChild(new dijit.layout.ContentPane({
        title: 'foo', content: 'bar'
    }));

    //putting this after adding the tabcontainer
    //avoids problems when open is initially true
    tp.startup();
});

澄清致电startup

通常,只要您以编程方式创建窗口小部件,就需要手动调用其startup。然而...

对此的一般例外是处理容器或布局小部件的子代(在这种情况下dijit.TitlePane扩展dijit.layout.ContentPane,其行为类似于布局小部件) - 这些小部件寻找要调用的子代{ {1}}当他们自己启动时(或者在startup的情况下,也在设置/加载新内容时)。

容器小部件(不是ContentPane,但例如ContentPaneBorderContainer及其子类,例如StackContainerAccordionContainer)也会调用TabContainer在容器已经启动后添加的子项。