2012-06-28 48 views
1

在我們的應用程序中,有一個tabpanel,我們在其中動態添加/刪除面板。在向父項添加子項之後調用doLayout()方法嗎?

的面板只需按一個菜單項的單擊菜單句柄通過添加以下代碼:

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

這裏getPanel()方法創建後返回面板。

假設主選項卡面板的ID是mainTabPanelId和孩子面板是panelId,在這種情況下,可以在下面的人指南:

  1. 是否需要調用後doLayout()mainTabPanel添加方法?
  2. doLayout()應該在mainTabPane l還是在新添加的子面板上調用,即Ext.getCmp('mainTabId').doLayout()Ext.getCmp('panelId').doLayout()
  3. 撥打doLayout()是否會處理所有與渲染有關的問題,例如滾動條?
  4. 方法getPanel()應該返回一個已經創建的面板(使用Ext.create)還是應該返回一個配置對象(有xtype:'panel')?考慮更好的表現,哪一個應該是首選?

回答

2

AbstractContainer::add()

< ...>如果容器的大小,管理佈局管理器配置,容器將在此時重新計算其內部佈局了。

所以你不必做 - 因爲:

AbstractContainer::doLayout()

< ...>框架使用這個內部刷新佈局形成大多數情況下, 。

AbstractContainer::defaults

對於默認爲工作,孩子的項目必須使用補充說:不使用Ext.create {的xtype ......}( 「widget.type」,{}) ©roger.spall

所以我寧願返回配置對象,而不是組件本身。

+0

感謝您的後o_nix。不幸的是,如果我們不調用doLayout(),那麼佈局看起來破損,但一旦調用了doLayout(),那麼所有問題(如滾動條出現等)都會得到修復。我們在很多瀏覽器中測試過這一點,發現在動態添加之後doLayout()調用是必須的。 – netemp

相關問題