2014-01-24 98 views
1

在使用dojo顯示包含tabContainer和一系列選項卡的borderContainer時遇到了一些麻煩,所有選項均包含在對話框中。這一切都是以編程方式完成的,並且startup()事件已被調用。Dojo tabcontainer not displayed

這些選項卡呈現並顯示,但相當不尋常。一旦對話框本身被刷新(在打開和關閉控制檯時發現),一切權利本身。我試圖通過調用它作爲啓動的一部分調整resize() - 這沒有奏效。我一直在努力使這個工作適合現在的年齡。它是這個唯一的小事!由於小部件沒有正確顯示,因此手動刷新對話框並不是很好的UI設計。 borderContainer具有高度和寬度屬性。

任何人都可以提出一些方法來嘗試,爲什麼?

http://i.stack.imgur.com/YXtkq.png

上方屏幕截圖(對不起,我沒有10代表還)! 我試圖使用'doLayout:false',並且沒有奏效。我已將「樣式」設置爲高度:360px和寬度:575px,這兩者都位於包含窗口小部件的邊界內。

+0

這通常與當它的父DOM節點不可見(或從DOM分離)時啓動的tabcontainer有關。你能在小提琴中重現問題嗎?這裏有一個出發點:http://fiddle.jshell.net/64MDQ/ – Frode

+0

@Frode通過從對話框的父窗口部件調用boardercontainer.startup(),我能夠正確渲染它。如果你提出答案,我會接受它。 – Galatoni

+0

我不確定這個問題或解決方案是什麼(有時我僅僅存在解決了問題;))。如果可以的話,請在答案中描述你的修復,你也會有你的10個代表。 – Frode

回答

1

那麼我發現,只是在父窗口小部件上做startup()是不夠的。因爲它是在一個隱藏的對話框小部件中實例化的,所以它需要從那裏實例化。

按鈕的onclick事件是:

//custom widget - contrary to its name, this is the content! 
var invoiceDialogWidget = new InvoiceDialogWidget(dialogValues); 

var dia = new DijitDialog({ 
id: "invoiceDialogWidget", 
content: invoiceDialogWidget, 
title: "Invoice Detail" 
onHide: function(){ 
    this.destroyRecursive(); 
} 
}); 
dia.show(); 

//magic line 
invoiceDialogWidget.invoiceDialogContentNode.startup(); 

我發現的是,通過調用啓動(),因爲我曾在片段上方 - 自定義插件進行正確的初始化和匹配對話框的風格(這是可見的)。在我從自定義小部件中調用它之前,哪個尚未完全實例化!

結果是在一個窗口小部件上調用了startup(),這個窗口默認爲它的父母樣式 - 這在當時是不可見的。

0

如果您在上漿時遇到麻煩,那麼我建議您查看doLayout屬性。如果你把它放在false上,那麼小部件將不再管理這個大小。


如果情況並非如此,那麼請提供一個代碼示例(重現問題)和/或關於出現問題的屏幕截圖。

+0

增加了一些更詳細的信息:對僞劣img鏈接: – Galatoni