Extjs 中的 Mixin 覆盖
Mixin overriding in Extjs
有 mixin class 将方法合并到目标 class。我想知道合并过程何时开始?
我已经重写了 mixin 的一种方法,但它并没有在目标 class 中被重写。所以我假设合并在覆盖之前进行。
Ext.define('Ext.container.DockingContainer',
...
Ext.define('Ext.panel.Panel',
...
Ext.override(Ext.container.DockingContainer
首先ext.js定义mixin,然后是目标class。当我覆盖 mixins 方法时,它不会影响目标 classes 方法。那么如何解决这个问题呢?如何正确覆盖 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 class 将方法合并到目标 class。我想知道合并过程何时开始?
我已经重写了 mixin 的一种方法,但它并没有在目标 class 中被重写。所以我假设合并在覆盖之前进行。
Ext.define('Ext.container.DockingContainer',
...
Ext.define('Ext.panel.Panel',
...
Ext.override(Ext.container.DockingContainer
首先ext.js定义mixin,然后是目标class。当我覆盖 mixins 方法时,它不会影响目标 classes 方法。那么如何解决这个问题呢?如何正确覆盖 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);
}
);