当我使用Ext.create(“ ....”)时,我想做一些初始化。该对象既小又小,我不想定义它,但是它需要mixin中的某种方法(在调用组件创建之前)...该怎么办?
最佳答案
标准实例替代
通常,我们在Ext.override()
之后使用Ext.create()
将重写应用于类的特定实例(请参见docs):
var myObj = Ext.create('Ext.some.Component', {
...
});
Ext.override(myObj, {
myMethod: function() {
// Do something.
this.callParent(arguments); // From Ext.some.Component class.
// Do something else.
}
});
this.callParent(arguments)
仅适用于创建的替代通过
Ext.override()
显式地通过
Ext.define()
隐式地特殊情况:覆盖
initComponent
由于
initComponent
方法是在Ext.create()
执行期间调用的,因此我们必须在Ext.create
中覆盖它。为了访问原始方法,我们必须使用一种变通方法来访问重写的方法:var myObj = Ext.create('Ext.some.Component', {
initComponent: function() {
// Do something.
// Get a reference to the class.
var myClass = Ext.getClass(this);
// Apply the overridden method from the class' prototype.
myClass.prototype.initComponent.apply(this, arguments);
// Do something else.
}
});