0

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);
    }
});
4

2 に答える 2

0

Ext.Panel.superclass.initComponent.call(this)代わりに試してください。

于 2013-02-19T19:01:47.087 に答える
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);
}

しかし、どちらも醜いイモです。

于 2013-02-19T22:32:05.373 に答える