Extjs中的Mixin重写

Extjs中的Mixin重写,extjs,mixins,Extjs,Mixins,存在将方法合并到目标类的mixin类。我想知道合并过程何时开始 我已经重写了mixin的一个方法,但它在目标类中没有被重写。所以我假设合并在覆盖之前进行 Ext.define('Ext.container.DockingContainer', ... Ext.define('Ext.panel.Panel', ... Ext.override(Ext.container.DockingContainer 首先ext.js定义mixin,然后是目标类。当我重写mixins方法时,它不会影响目标类

存在将方法合并到目标类的mixin类。我想知道合并过程何时开始

我已经重写了mixin的一个方法,但它在目标类中没有被重写。所以我假设合并在覆盖之前进行

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

首先ext.js定义mixin,然后是目标类。当我重写mixins方法时,它不会影响目标类方法。那么如何解决这个问题呢?如何正确地重写mixins方法?

我用以下方法重写了它:

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

到了那个时候已经太晚了,在应用mixin之前,您需要重写它。实际上,
DockingContainer
仅在该实例中使用,所以您可以覆盖面板本身。