2017-02-28 6 views
4

メソッドをマージしてクラスをターゲットにするmixinクラスがあります。私は合併プロセスが始まる時を知りたいですか?ExtjでのMixinのオーバーライド

mixinのメソッドの1つをオーバーライドしましたが、ターゲットクラスでオーバーロードされていません。だから私は、マージがオーバーライドする前に行くと仮定します。

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

最初にext.jsは、mixin、targetクラスを定義します。 mixinsメソッドをオーバーライドすると、ターゲットクラスメソッドには影響しません。だからこの問題を解決するには? mixinsメソッドを適切にオーバーライドする方法は?

+0

。それが進むにつれて、 'DockingContainer'はその1つのインスタンスでのみ使用されるので、パネル自体をオーバーライドできます。 –

答えて

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); 
    } 
);