2011-03-07 39 views
0

当TitlePane的open属性设置为false时,我无法动态地将小部件添加到内容。Dojo - 将dijit添加到已关闭的TitlePane

例如,下面的代码不起作用。

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?

回答

3

您确定您在编程式创建的小部件上正确地呼叫startup?对我来说,以下的作品opentruefalse

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,这就像一个布局控件) - 这些看起来给孩子打电话startup时,他们自己启动(或者在ContentPane的情况下,当新内容被设置/加载时)。

容器构件(未ContentPane,但如BorderContainerStackContainer和它的子类,如AccordionContainerTabContainer)也呼吁后的容器已经开始添加儿童startup

+0

谢谢。我没有意识到startup()被调用的命令会影响任何内容。什么时候需要显式的startup()调用,什么时候调用它?有没有一种好的技术或dojo工具可以帮助确保startup()调用顺序是正确的,并且它们不会比所需的更频繁地调用? – 2011-03-08 00:26:05

+0

经过一番尝试之后,我发现每个Container都需要一个startup()调用,但不是每个Pane都需要调用,并且在所有内容都被插入到给定的Container后立即进行调用。这是一个好的假设吗? – 2011-03-08 01:35:36

+0

发布编辑以阐明'startup'的调用,请参阅代码块后的部分。 – 2011-03-08 06:34:52