2013-04-25 81 views
2

我想覆蓋Ext.grid.column.Column類的initComponent()方法。但一些它如何執行所有這些線。基本上我想從元素中移除偵聽器,並希望將其分配給其他元素。重寫initComponent()方法

Ext.override(Ext.grid.column.Column, 
{  
    initComponent: function(){ 
     . 
     . //All lines are as it is till me.callParents(); 
     . 
     . 
     . 
     . 
     . 
     . 
     . 
     // Initialize as a HeaderContainer 
     me.callParent(arguments); 

     me.on({  <<<------------------------------Do not need these. 
      element: 'el', 
      click: me.onElClick, 
      dblclick: me.onElDblClick, 
      scope: me 
     }); 
     me.on({  <<<------------------------------Do not need these. 
      element: 'titleEl', 
      mouseenter: me.onTitleMouseOver, 
      mouseleave: me.onTitleMouseOut, 
      scope:  me 
     }); 

    } 

} 

我不想爲「el」和「titleEl」添加監聽器,因此我刪除了這些行。但一些它仍然添加了聽衆。 我也在AfterRender函數中寫入me.un()。即使它增加了聽衆「El」和「titleEl」

任何人都可以請指導我在哪裏我錯了?????

回答

2

而不是使用Ext.override,使用Ext.define創建一個子類。當您重新定義initComponent方法時,可以使用this.superclass.superclass.initComponent.call跳過Ext.grid.column.Column#initComponent

Ext.define('MyApp.grid.column.Column', { 
    extend: 'Ext.grid.column.Column', 
    alias: 'widget.mycolumn', 

    initComponent: function(){ 
     // Pre-initComponent from column class here 

     // Ext.grid.header.Container#initComponent 
     this.superclass.superclass.initComponent.call(this); 

     // Do optional stuff here 
    } 
}); 

然後當您創建新列,使用xtype: 'mycolumn'使用自己的實現,同時仍然能夠根據需要使用正則列。