0

カスタム コンポーネントを宣言する場合、コンポーネントの拡張機能を作成するときにプロパティに変更を正しく適用するにはどうすればよいですか? 例えば:

Ext.define('GridForm',{
    extend: 'Ext.window.Window',
    initComponent: function(){  
        Ext.apply(this,{
            title: 'This a test window!'
            ,height: 400
            ,width: 400       
        });
        this.callParent();
    }    
});
Ext.define('LedDataForm',{
    extend: 'GridForm',
    initComponent: function(){
        Ext.apply(this,{
            title: 'OK, I want to change it to this.'
        });        
        this.callParent();
    }
});
Ext.application({
    name : 'MyApp',
    launch : function() {
        Ext.create('LedDataForm').show();
    }
});

この例では、「LedDataForm」を作成するときにウィンドウのタイトルを変更したいだけです。すべてのコメントをお待ちしております。

4

2 に答える 2

1

init 関数でオーバーライドしたい構成を記述しないでください。代わりに、デフォルトの構成として指定してください。

Ext.define('GridForm',{
    extend: 'Ext.window.Window',
    title: 'This a test window!',// Give this as configs rather than in init function
    initComponent: function(){  
        Ext.apply(this,{
            width:400,
            height:400
        });
        this.callParent();
    }    
});
Ext.define('LedDataForm',{
    extend: 'GridForm',
    title: 'OK, I want to change it to this.',
    initComponent: function(){
        Ext.apply(this,{
        });        
    this.callParent();
    }
});
Ext.application({
    name : 'MyApp',
    launch : function() {
        Ext.create('LedDataForm',{
            title:'testing'
        }).show();
    }
});
于 2016-07-15T05:51:26.470 に答える
0

なぜこれをしないのですか:

Ext.define('GridForm',{
    extend: 'Ext.window.Window',
    title: 'This a test window!',
    height: 400,
    width: 400         
});
Ext.define('LedDataForm',{
    extend: 'GridForm',
    title: 'OK, I want to change it to this.'
});
Ext.application({
    name : 'MyApp',
    launch : function() {
        Ext.create('LedDataForm').show();
    }
});

単純な静的構成をクラス本体に適用できます (第 2 引数が に渡されますExt.define)。

initComponent通常、値を計算するか、初期化ロジックを実行する必要がある場合にのみ必要です。

また、多くのことを説明しているので、こちらをご覧ください: The Class System

于 2016-08-25T15:41:22.603 に答える