2012-12-18 60 views
0

我需要更改其中一個選項卡的類別 - 該面板將從子類別ContentPane小工具更改爲子類別BorderLayout小工具。替換dojo/dijit TabContainer中特定選項卡的內容?

至少我可以從TabContainer中刪除孩子,然後在該銷燬標籤的位置插入一個具有相同標籤標題的新孩子。但有沒有一個合法的快捷方式,只需取代支持控制而不會使標籤失效?

(道場1.8 - 小部件的編程實例)

+0

一旦你調用'的addChild(子)',您通過鍵入'的'var' ContentPane'分辯?難道不可能用新的BorderContainer替代'var'嗎? – nozzleman

+0

好吧,我可以改變這個var - 但是這不會改變任何TabContainer內部的變量指向舊的ContentPane ......我需要告訴容器它的內容正在改變。或者我誤解了你? –

+0

好,比我這個migth根本不可能。正如你已經說過的那樣,「TabContainer」不提供'replace'方法或類似的東西。但是應該可以做一個令人討厭的workaroud來執行'yourContentPane.set('content',yourBorderContainer.domNode);'或者某事。像那樣。 – nozzleman

回答

0

而是通過dijit/layout/ContentPane添加標籤將其添加爲dijit/layout/StackPane的。然後使用StackPane的方法addChild(widget)removeChild(widget)和/或selectChild(widget)

var tab1 = registry.byId("tab1"); // dijit/layout/StackContainer 

var bc = new BorderContainer(); 
var cp1 = new ContentPane({ 
    content: "content pane 1", 
    region: "top"   
}); 
var cp2 = new ContentPane({ 
    content: "content pane 2", 
    region: "center" 
}); 
bc.addChild(cp1); 
bc.addChild(cp2); 

tab1.addChild(bc); 
tab1.selectChild(bc); 

看到它在行動:http://jsfiddle.net/phusick/szCb4/

+0

正是我所問的,謝謝(其他人只需要注意一點:這需要知道你將要交換特定的選項卡,並提前準備 - 如果還有事後方法,仍然會很好奇。這工作現在正常!) –

相關問題