ExtJS-Ext.Msg框的动态高度和宽度

时间:2018-08-13 17:16:09

标签: javascript html extjs

我有一个这样创建的消息框:

Ext.Msg.show({
  title: 'title',
  msg: 'some message',
  buttons: Ext.Msg.OKCANCEL,
  icon: Ext.Msg.WARNING
});

消息内容的长度是可变的,有时会分成两行。我的要求是将消息分成一行,因此我将消息框的宽度硬编码为:

Ext.Msg.show({
      title: 'title',
      msg: 'some message',
      buttons: Ext.Msg.OKCANCEL,
      icon: Ext.Msg.WARNING,
      minWidth: 900,
      width: 900
    });

这增加了框的宽度,在大多数情况下,我的消息现在可以放入一行,足以满足我的要求。但是,这带来了一个新问题。

enter image description here

如您所见,现在在框的底部添加了一个空白区域。如果每个新条目大于一定长度,则该空间会增加(我认为此长度是框架为框计算的原始宽度)。

我认为正在发生的事情是,该框架最初会根据提供的数据来计算高度和宽度。但是随后宽度被我设置的新值覆盖,从而增加了框的水平长度。但是由于高度从未得到相应的调整,因此将其保留为最初计算的值,从而导致上述行为。

一些帮助解决此问题的方法将不胜感激!谢谢。

更新: 使用的ExtJS版本是4.1.1

工作小提琴here

1 个答案:

答案 0 :(得分:1)

实际上,当调用show的{​​{1}}方法时,框架调用了一个内部函数msgbox,但那时我们的doAutoSize(900)并未应用于width的{​​{1}}(包含味精部分),这就是为什么它需要更高的topContainer

要解决此问题,我们可以在msgbox方法之后调用height方法,如下所示:-

setHeight

Working Fiddle

注意:有关更多详细信息,请遍历show框架方法。

希望这会帮助/指导您。