Javascript Dojo-将dijit添加到闭合标题栏
当TitlePane的open属性设置为false时,我无法将小部件动态添加到内容中 例如,以下代码不起作用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
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();