Extjs中的Mixin覆盖

7

有一种混合类可以将方法合并到目标类中。我想知道合并过程何时开始?

我重写了混合类中的一个方法,但在目标类中没有被覆盖。因此,我认为合并是在覆盖之前进行的。

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

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


到那个时候,你需要在混合应用之前覆盖它。由于 DockingContainer 只在一个实例中使用,因此您可以直接覆盖面板本身。 - Evan Trimboli
1个回答

4
我已经用以下方式覆盖了它:
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);
    }
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接