Wenn man in ExtJs ein Panel mehrfach verwenden will, muss man dieses in einer Klasse kapseln, den aus einem einfachen new Ext.Panel Aufruf kann man nicht mehrere Instanzen erstellen.
Um das Panel in einer Klasse zu kapseln biete ExtJS die Möglichkeit eines Extends und der initComponent Methode.
Hier ein Beispiel:
MyGrid = Ext.extend(Ext.grid.GridPanel, {
loadMask : true,
initComponent : function() {
var store = new Ext.data.JsonStore({
autoLoad : true,
url: '../services.php?',
root: 'data',
id: 'id',
fields: [
'name','beschreibung'
]
});
var cm = new Ext.grid.ColumnModel([ {
dataIndex: 'name',
header: 'Rubrik',
width: 170,
id: 'name'
}, {
header: "",
width: 17,
dataIndex:'farbcode'
}
]);
Ext.apply(this, {
split: true,
waitMsgTarget: true,
iconCls: 'grid',
store: store,
cm: cm
});
// Aufruf der Parent Klasse
MyGrid.superclass.initComponent.apply(this,arguments);
}
});
// registieren
Ext.reg('mgrid', MyGrid);Jetzt kann man einfach über new MyGrid oder den xtype 'mygrid' auf das Panel zugreifen.
Diese Methode ermöglicht es einem seine Klassen deutlich unabhängiger zu machen. Da ich kein hinweis auf diese Methode bei ExtJs fand war es für mich eine kleine Offenbarung als ich es Dank Axel herausgefunden habe.


0 Antworten über ExtJs Panels in Klassen kapseln
Bisher gibt es keine Kommentare.