2011-03-07 14 views
0

TitlePaneのopenプロパティがfalseに設定されていると、コンテンツに動的にウィジェットを追加できません。Dojo - 閉じたタイトルパネルにdijitを追加

たとえば、次のコードは機能しません。

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); 

オープンプロパティがfalseに設定されている場合、ウィジェットをタイトルパネルに追加するにはどうすればよいですか?

答えて

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.layout.ContentPaneを拡張し、この場合dijit.TitlePane、中)コンテナやレイアウトのウィジェットの子を扱うときに...しかし

これまでの一般的な例外はある - 子供たちがstartupを呼び出すようにするために、これらはときに見て、彼ら(または、新しいコンテンツがセット/ロードされたときにもContentPaneの場合)開始されます。 (ないContentPaneが、例えばBorderContainerStackContainerや、AccordionContainerTabContainerなどそのサブクラス)

コンテナウィジェットもコンテナがすでに開始された後に追加子供にstartupを呼び出します。

+0

ありがとうございます。私はスタートアップ()が呼ばれた秩序が何にも影響を及ぼしていることに気付かなかった。明示的なstartup()コールが必要な場合はいつ呼び出されますか? startup()呼び出しの順序が正しいこと、そして必要以上に頻繁に呼び出されないことを保証するのに役立つ良いテクニックやdojoユーティリティはありますか? –

+0

ちょっと実験した結果、各コンテナに対してstartup()コールが必要であるが、各ペインではなく、すべてのコンテンツがコンテナに挿入された直後にコールが行われることがわかった。これは良い仮定ですか? –

+0

'startup'の呼び出しを明確にするために編集されました。コードブロックの後の部分を参照してください。 –

関連する問題