【问题标题】:Dojo tabcontainer not displayingDojo tabcontainer 不显示
【发布时间】:2014-01-24 08:49:15
【问题描述】:

在让dojo 显示包含tabContainer 和一系列选项卡的borderContainer 时遇到了一些麻烦,所有选项卡都包含在对话框中。这一切都是以编程方式完成的,并且已经调用了 startup() 事件。

标签被渲染和显示,但非常不寻常。一旦对话框本身被刷新(在打开和关闭控制台时发现),所有的权利本身。我试图通过调用它作为启动的一部分来强制调整大小() - 这没有奏效。多年来,我一直在努力让它正常工作。这是唯一的琐事!由于小部件未正确显示而手动刷新对话框并不是很好的 UI 设计。 borderContainer 确实有 height 和 width 属性。

谁能推荐一些方法来尝试,为什么?

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

上面的屏幕截图(对不起,我还没有 10 个代表)! 我试过使用'doLayout:false',但没有奏效。我将“样式”设置为 height: 360px 和 width: 575px,它们都在包含小部件的边界内。

【问题讨论】:

  • 这通常与 tabcontainer 在其父 DOM 节点不可见(或与 DOM 分离)时启动有关。你能在小提琴中重现这个问题吗?这是一个起点:fiddle.jshell.net/64MDQ
  • @Frode 通过从对话框的父小部件调用 boardercontainer.startup() 我能够正确呈现它。如果您输入答案,我会接受。
  • 我不确定问题或解决方案是什么(有时我的存在可以解决问题;))。如果可以,请在答案中描述您的解决方法,您也将获得 10 次代表。

标签: javascript dojo


【解决方案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() 就像我在上面的 sn-p 中所做的那样 - 自定义小部件已正确实例化并与对话框的样式相匹配(使其可见)。在我从自定义小部件中调用它之前,尚未完全实例化!

结果是在一个默认为其父样式的小部件上调用 startup() - 这在当时是不可见的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-18
    • 2012-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-13
    • 2010-11-15
    相关资源
    最近更新 更多