5

initComponent() 問題は、this.itemsインスタンス変数ではなくクラス変数を参照するいくつかの項目を作成することです。

したがって、2 つのインスタンスを作成すると、最終的に 2 つのボタンが作成されます。

items: [],
initComponent: function() {
  this.items.push( { xtype: 'button', ... }) ;
  this.callParent( arguments );
}

プッシュを使用する必要があるため、新しい要素がプッシュされるたびに.

ボタンが作成される前に定義を変更できる場所と同等のインスタンスはありますかthis.items、または重複を手動で確認する必要がありますか?

4

2 に答える 2

7

あなたはすべきではありませんreturn this.callParent( arguments );

これで十分です:

initComponent: function() {
    var me = this;
    me.items = { xtype: 'button', ... }; //Are you sure items is filled up here?
    me.callParent();
}

また、独自の「コンポーネント」を作成していて、パラメータを渡したい場合Ext.createは、常に次のことを行います。

constructor: function (config) {
    var me = this;
    Ext.apply(me, config); 
    me.callParent();
}

これにより、クラス内のアイテム宣言が、手渡ししたもので上書きされます。Ext.create()

于 2012-11-30T13:35:40.967 に答える
1

コンストラクターをオーバーロードして、そこで構成を微調整することができます。

constructor: function(config)
{
  config.items.someButton = { xtype: 'button', ... };
  this.callParent([config]);
}
于 2012-11-30T13:19:39.607 に答える