2014-01-24 97 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