5 Stimmen

Ändern von Elementen in initComponent()

Ich erstelle einige Artikel in initComponent() Das Problem ist, this.items bezieht sich irgendwie auf die Klassenvariable, nicht auf die Instanzvariable.

Wenn ich also zwei Instanzen mache, habe ich am Ende zwei Schaltflächen.

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

Da ich Push verwenden muss, werden jedes Mal neue Elemente hineingeschoben.

Gibt es eine Instanz, die der folgenden entspricht this.items wo ich die Definition ändern kann, bevor die Schaltfläche erstellt wird, oder muss ich manuell nach Duplikaten suchen?

7voto

Johan Haest Punkte 4361

Sie sollten nicht return this.callParent( arguments );

Das reicht schon aus:

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

Auch wenn Sie Ihre eigene 'Komponente' schreiben und Parameter in der Ext.create Ich gehe immer wie folgt vor:

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

Dadurch wird die Item-Deklaration in Ihrer Klasse mit derjenigen überschrieben, die Sie in der Ext.create()

1voto

Rob Agar Punkte 12044

Sie könnten den Konstruktor überladen und die Konfiguration dort anpassen:

constructor: function(config)
{
  config.items.someButton = { xtype: 'button', ... };
  this.callParent([config]);
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X