当我使用 Ext.create(“....”)时,我想做一些初始化。该对象简单而小巧,我不想定义它,但它需要一些来自mixin的方法(在调用组件之前)...我该怎么做?
答案 0 :(得分:2)
听起来你正在做的事情是:
Ext.create('Ext.panel.Panel', {
prop1: value1,
prop2: value2
});
如果是这种情况,您应该能够添加一个名为initComponent的属性,该属性可以执行您想要的操作。只需记住调用原始initComponent,以便正确构建所有内容:
Ext.create('Ext.panel.Panel', {
prop1: value1,
prop2: value2,
initComponent: function () {
this.doSomething();
Ext.panel.Panel.prototype.initComponent.apply(this, arguments);
}
});
答案 1 :(得分:2)
通常,我们会在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
由于在{/ 1}}执行期间initComponent
方法被称为,我们必须在Ext.create()
内覆盖它。为了访问原始方法,我们必须使用变通方法来访问重写方法:
Ext.create