在将父项添加到父项后,是否必须调用doLayout()方法?

时间:2012-06-28 07:05:57

标签: dynamic extjs panel extjs4.1

在我们的应用程序中,有一个tabpanel,我们在其中动态添加/删除面板。

通过菜单处理程序中的以下代码单击菜单项添加面板:

Ext.getCmp('mainTabPanelId').add(getPanel());

此处getPanel()方法在创建后返回面板。

假设主标签面板的ID为mainTabPanelId且子面板的ID为panelId,在此上下文中,有人可以指导以下内容:

  1. 是否有必要在添加方法后在doLayout()上致电mainTabPanel
  2. doLayout()还是在新添加的子面板上调用mainTabPane,即Ext.getCmp('mainTabId').doLayout()Ext.getCmp('panelId').doLayout()
  3. doLayout()的调用会处理与渲染相关的所有问题,例如滚动条吗?
  4. 方法getPanel()应返回已创建的面板(使用Ext.create),还是应该返回配置对象(xtype:'panel')?为了更好的性能,哪一个应该是首选的,记住时间?

1 个答案:

答案 0 :(得分:2)

AbstractContainer::add()

  

< ...>如果Container配置了大小管理布局管理器,则Container也会在此时重新计算其内部布局。

所以你不必做 1 - 3 因为:

AbstractContainer::doLayout()

  

< ...>在大多数情况下,框架在内部使用它来刷新布局。

AbstractContainer::defaults

  

要使默认设置起作用,必须使用{xtype:......}添加子项目。不使用Ext.create(“widget.type”,{})©roger.spall

所以我更喜欢返回配置对象而不是组件本身。