当我使用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.
    }
});

09-25 17:21
查看更多