2017-02-28 26 views
4

有mixin類將方法合併到目標類。我想知道合併過程何時開始?在Extjs中重寫Mixin

我已經覆蓋了mixin的一種方法,但它並沒有在目標類中被覆蓋。所以我認爲合併在重寫之前。

Ext.define('Ext.container.DockingContainer', 
... 
Ext.define('Ext.panel.Panel', 
... 
Ext.override(Ext.container.DockingContainer 

首先ext.js定義了mixin,然後是目標類。當我重寫mixins方法時,它不影響目標類方法。那麼如何解決這個問題呢?如何正確地重寫mixins方法?

+0

到那時爲時已晚,就需要應用混入之前將其覆蓋。就像它一樣,「DockingContainer」僅用於該實例,因此您可以重寫面板本身。 –

回答

1

我用這種方式重寫它:

Ext.define('Ext.overrides.container.DockingContainer', 
{  
    override: 'Ext.container.DockingContainer', 
    getDockedItems: function(selector, beforeBody) 
    { 
      .... 
    } 
}, function() { 
     Ext.Object.each(Ext.ClassManager.classes, function(name, cls) { 
      if (cls.prototype && cls.prototype.mixins && cls.prototype.mixins.hasOwnProperty("docking")) { 
       cls.prototype.getDockedItems = this.prototype.getDockedItems; 
      } 
     }, this); 
    } 
);