2012-06-26 71 views
2

哪些是擴展/子類組件的正確方法?子類Ext JS組件的正確方法是什麼?

Ext.define('Holidays.Components.UserInfo', { 
extend: 'Ext.panel.Panel', 
alias: 'widget.UserInfo', 
region: 'west', 
split: true, 
title: 'Categories', 
width: 300, 
collapsible: true, 
layout: 'border', 
animCollapse: false, 

initComponent: function() { 
    var me = this; 

    Ext.apply(me, { 
     items: [{ 
      xtype: 'panel', 
      region: 'center', 
      border: false 
     }, { 
      xtype: 'panel', 
      title: 'Tab 2', 
      region: 'south', 
      collapsible: true, 
      height: 200 
     }, ] 
    }); 
    me.callParent(arguments); 
} 
}); 

或者這樣:

Ext.define('Holidays.Components.UserInfo', { 
extend: 'Ext.panel.Panel', 
alias: 'widget.UserInfo', 

initComponent: function() { 
    var me = this; 

    Ext.apply(me, { 
     width: 300, 
     collapsible: true, 
     layout: 'border', 
     animCollapse: false, 
     region: 'west', 
     split: true, 
     title: 'Categories', 
     items: [{ 
      xtype: 'panel', 
      region: 'center', 
      border: false 
     }, { 
      xtype: 'panel', 
      title: 'Tab 2', 
      region: 'south', 
      collapsible: true, 
      height: 200 
     }, ] 
    }); 
    me.callParent(arguments); 
} 
}); 

當我使用的第一個版本,像這樣

this.userPanel = Ext.create("Holidays.Components.UserInfo"); 

我的面板上有動畫colapsed的時候,我得到奇怪的佈局行爲創建我的類的實例。

我可以在define中設置哪些屬性,以及我必須在initComponent中設置哪些屬性?

回答

1

你可以在here找到標題問題的完整解釋。還請閱讀我留給分子人的評論,並查看我評論中包含的鏈接。

我不確定你爲什麼會在第一個版本中出現這種奇怪的行爲,對於我所知道的情況,這不應該是這樣。你能否讓我們知道在使用第一個版本時會發生什麼,但在InitComponent中配置layoutanimCollapse?另外,您是否有機會多次創建此組件?

+0

我會嘗試創建更多的實例,然後看看會發生什麼。我現在正在重寫整個佈局,但我始終都是初學者並且一直在學習,所以我想知道什麼纔是最佳實踐,才能正確開始:) – Misiu

+0

從頭開始重寫組件。我不知道爲什麼,但現在它完美:) – Misiu

相關問題