0
Ext.define('extjs.example.mypanel',{
    extend:'Ext.panel.Panel',
    layout: {
        type: 'vbox',
        align : 'stretch',
        pack  : 'start',
     },
    initComponent: function(config) {
        Ext.apply(this.subpanel,{
        html:'panel changed',
        listeners:{
                click: function(){alert('hi');},
                element: 'body'
        }
    } 
        );
        Ext.apply(this,{
            items: [
                this.subpanel,
                {html:'panel 2', height:150},
                {html:'panel 3', height:150}
            ]
        } 
        );
        this.callParent(arguments);
    },
    subpanel:Ext.create('Ext.panel.Panel',{
        html:'panel 1', 
        height:150
    })

} );

Ext.onReady(function() {
Ext.create('extjs.example.mypanel', {
    renderTo: Ext.getBody(),
    height:500,
    width: 500
});

});

それはコードです。Ext.applyの使い方を勉強したいです。ここでは、この方法で 2 つの構成を変更します。1 つは html で、もう 1 つはリスナーです。しかし、htmlが機能するように変更されていることがわかりました。しかし、リスナーはそうではありません。

私の質問は次のとおりです。1) 私の問題は何ですか? 私は間違っていましたか、Ext.apply で一部の設定を変更できませんか? 2)間違っていた場合、どうすれば修正できますか? 3)Ext.apply を使用できない設定がある場合は?それについての規則や文書はありますか?

4

1 に答える 1

0

Ext.applyリスナーを割り当てません。configのすべてのプロパティを指定されたオブジェクトにコピーするだけです。あなたの例this.subpanelではのインスタンスでExt.panel.Panelあり、あなたができることは代わりに設定オブジェクトを渡すことです:

subpanel: {
    xtype: 'panel',
    html: 'panel 1',
    height: 150
}
于 2012-04-30T11:39:06.340 に答える