如何在变量中调用ext js 3.4中的超类

时间:2013-02-19 18:41:46

标签: extjs extjs3

有谁知道如何成功调用ext js 3.4中的超类? 在我的示例代码中,我似乎无法让超类在面板上工作。

MyWindow = Ext.extend(MyWindowUi, {
    initComponent: function() {
        MyWindow.superclass.initComponent.call(this);
        this.createTextField();
    },  
    createTextField : function() {  
        var p = new Ext.Panel({
            title: 'somepanel',
            initComponent: function() {
                console.log('init component');
                console.log(this);
                this.superclass.initComponent.call(this); //NOT WORKING??
            }
        });
        this.add(p);
    }
});

2 个答案:

答案 0 :(得分:0)

请尝试Ext.Panel.superclass.initComponent.call(this)

答案 1 :(得分:0)

它不起作用,因为在创建p时你没有调用Ext.Panel的initComponent。如果你要使用前一个方法的超类调用来覆盖一个方法,那么如果不需要范围技巧,Ext.extend会更干净。

您还可以执行以下操作:

   createTextField : function() {  
    var p = new Ext.Panel({
        title: 'somepanel'
    }),
    oldInit = p.initComponent;

    p.initComponent = function() {
        console.log('init component');
        console.log(this);
        oldInit.call(this);
    }

    this.add(p);
}

或类似的东西:

createTextField : function() {  
    var p = new Ext.Panel({
        title: 'somepanel',
        initComponent: function() {
            console.log('init component');
            console.log(this);
            Ext.Panel.prototype.initComponent.call(this);
        }
    });
    this.add(p);
}

但他们都是丑陋的imo。