Javascript Dojo-将dijit添加到闭合标题栏

Javascript Dojo-将dijit添加到闭合标题栏,javascript,dojo,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" , tabSt

当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时,如何将小部件添加到标题栏中?

您确定在以编程方式创建的小部件上正确调用了
startup
?无论
open
true
还是
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();
});
要澄清调用
启动

通常,任何时候以编程方式创建小部件时,都需要手动调用其
启动
。然而

一般的例外是在处理容器或布局小部件的子部件时(在本例中,
dijit.TitlePane
扩展了
dijit.layout.ContentPane
,其行为类似于布局小部件),这些小部件在自己启动时寻找调用
startup
(或者在
ContentPane
的情况下,也是在设置/加载新内容时)


容器小部件(不是
ContentPane
,而是
BorderContainer
StackContainer
及其子类,如
accordioncainer
TabContainer
)在容器已经启动后添加的子项上也调用
startup

您确定在以编程方式创建的小部件上正确调用
startup
?以下内容适用于我,无论
open
true
还是
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();
});
要澄清调用
启动

一般来说,任何时候以编程方式创建小部件时,都需要手动调用其
启动

一般的例外是在处理容器或布局小部件的子部件时(在本例中,
dijit.TitlePane
扩展了
dijit.layout.ContentPane
,其行为类似于布局小部件),这些小部件在自己启动时寻找调用
startup
(或者在
ContentPane
的情况下,也是在设置/加载新内容时)


容器小部件(不是
ContentPane
,而是
BorderContainer
StackContainer
及其子类,如
accordioncainer
TabContainer
)还可以对容器启动后添加的子对象调用
startup

谢谢。我不知道调用startup()的顺序会影响任何事情。何时需要显式startup()调用,何时应该调用?是否有一种好的技术或dojo实用程序可以帮助确保startup()成功调用顺序是正确的,而且调用的次数没有超出需要?经过一点实验,我发现一家初创公司()每个容器都需要调用,而不是每个窗格,并且调用应该在所有内容插入给定容器后立即发生。这是一个好的假设吗?为澄清
启动的调用进行了后期编辑,请参阅代码块后的部分。thx我对此感到费解……这是我必须初始化ti的代码tlepane首先是datagrid..
var dijitTitle=new dijit.TitlePane({title:baseLayout.tableTitle,open:index==0?true:false},creationDivTitle);fisaSubGrid=new fisaSubGrid(subGridParams);dijitTitle.startup();dijitTitle.addChild(fisaSubGrid);fisaSubGrid.startup();
谢谢。我不知道startup()的调用顺序会影响任何事情。什么时候是显式启动()需要调用以及何时调用?是否有一种好的技术或dojo实用程序可以帮助确保startup()调用顺序正确,并且调用的次数不会超过需要的次数?经过一点实验,我发现startup()每个容器都需要调用,而不是每个窗格,并且调用应该在所有内容插入给定容器后立即发生。这是一个好的假设吗?为澄清
启动的调用进行了后期编辑,请参阅代码块后的部分。thx我对此感到费解……这是我必须初始化ti的代码tlepane首先是datagrid..
var dijitTitle=new dijit.TitlePane({title:baseLayout.tableTitle,open:index==0?true:false},creationDivTitle);fisaSubGrid=new fisaSubGrid(subGridParams);dijitTitle.startup();dijitTitle.addChild(fisaSubGrid);fisaSubGrid.startup();