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。在这里,我通过这种方法更改了两个配置。一个是html,另一个是监听器。但我发现 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 回答