当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?
答案 0 :(得分:3)
您确定要在以编程方式创建的小部件上正确调用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();
});
澄清致电startup
:
通常,只要您以编程方式创建窗口小部件,就需要手动调用其startup
。然而...
对此的一般例外是处理容器或布局小部件的子代(在这种情况下dijit.TitlePane
扩展dijit.layout.ContentPane
,其行为类似于布局小部件) - 这些小部件寻找要调用的子代{ {1}}当他们自己启动时(或者在startup
的情况下,也在设置/加载新内容时)。
容器小部件(不是ContentPane
,但例如ContentPane
,BorderContainer
及其子类,例如StackContainer
和AccordionContainer
)也会调用TabContainer
在容器已经启动后添加的子项。