【问题标题】:Mixin overriding in ExtjsExtjs 中的 Mixin 覆盖
【发布时间】:2017-02-28 13:09:19
【问题描述】:

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

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

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

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

【问题讨论】:

  • 到那时为时已晚,您需要在应用 mixin 之前覆盖它。事实上,DockingContainer 仅在该实例中使用,因此您可以覆盖面板本身。

标签: extjs mixins


【解决方案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);
    }
);

【讨论】:

    猜你喜欢
    • 2018-07-17
    • 2014-09-26
    • 1970-01-01
    • 2016-06-04
    • 2012-05-07
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多