Mit Hilfe von benutzerdefinierten Attributen in ExtJS-Komponente
Mein Antrag wurde immer mehr für das Letzte Jahr oder so und ich habe endlich angefangen zu splitten, in der die gemeinsamen Komponenten, die durch die Ausweitung der bestehenden. Ich habe festgestellt, dass dies wirklich hilfreich ist - die zunehmende Geschwindigkeit der Entwicklung und Wartung. Mein problem ist, dass ich noch nicht Begriffen, das Konzept der Verwendung von benutzerdefinierten Parametern, die auf meine Komponenten und war in der Hoffnung, es könnte jemand bieten einige Hilfe in dem folgenden Beispiel. Speziell ich bin anscheinend nicht in der Lage sein, um Zugriff auf die benutzerdefinierten parameter (myCustomParam) in die proxy-erklärt in der initComponent Funktion:
MyEmployeeGrid = Ext.extend(Ext.grid.GridPanel, {
myCustomParam: "CompanyX",
initComponent:function() {
//Store Reader
var myReader = new Ext.data.JsonReader({
root : 'objectsToConvertToRecords',
idProperty: 'id',
fields : [
{name: 'id'},
{name: 'employee', allowBlank:false},
{name: 'department', allowBlank:false}
]
});
//Store Proxy
var dwrProxy = new Ext.ux.data.DwrProxy({
apiActionToHandlerMap : {
read : {
dwrFunction : EmployeeService.readCompanyEmployees,
getDwrArgsFunction: function(request, recordDataArray, oldRecordDataArray) {
return [myCustomParam];
}
}
}
});
//Setup Params for the grid
Ext.apply(this, {
store: new Ext.data.Store({
proxy: dwrProxy,
reader: myReader,
autoLoad : true,
autoSave: true
}),
columns: [{header: "Employee", dataIndex: 'employee'},
{header: "Department", dataIndex: 'department'}]
});
MyEmployeeGrid.superclass.initComponent.apply(this, arguments);
} //eo function initComponent
,onRender:function() {
MyEmployeeGrid.superclass.onRender.apply(this, arguments);
} //eo function onRender
});
Ext.reg('myemployeegrid', MyEmployeeGrid);
Du musst angemeldet sein, um einen Kommentar abzugeben.
myCustomParam
ist eine Eigenschaft des Objekts in Frage. Es wird nie erklärt, wie eine variable in seinem eigenen Recht. Sie können dies durch ausführen des Codes durch jslint.Du willst
this.myCustomParam
.Wenn Sie versuchen, übergeben Sie in den Parametern, jedoch, möchten Sie vielleicht versuchen, auf diese Weise statt:
new MyGrid({ customParam: "value" });
? Wie wärs mit xtype?cfg
Gegenstand wird eine Eigenschaft auf das neue Gitter. Wenn Sie sich registrierenMyGrid
Sie wäre in der Lage, um zu konstruieren ein mitxtype
. (d.h.Ext.reg(MyGrid, 'my-grid');
)cfg = cfg || {}
ist nur erforderlich, wenn Sie planen, etwas hinzuzufügen, zucfg
. Wie geschrieben sind in diesem code die Zeile ist sinnlos.initComponent
weil ich dachte, es war klar, das zu tun. Ich werde fügen Sie ein "Zeugs" Kommentar zu machen, dass klarer. Ebenfalls zu verwendencfg
nach der Bewachung gegen Sie wird nicht definiert. Ich habe gerade den Eindruck, dass er versucht zu verstehen, wie man Variablen ininitComponent
nennen.Ich habe ein starkes Gefühl, dies zu tun, mit dem Bereich um den Punkt, an dem getDwrArgsFunction genannt wird. Es möglicherweise nicht wissen, was myCustomParam ist (trotz der Tatsache, das sollte vielleicht diese.myCustomParam, und dass Sie wollen, stellen Sie diese, nachdem Sie mich beworben hatte jede config), denn es ist nicht deklariert, in der DwrProxy Objekt und hat keinen Bezug zu seinem Besitz MyEmployeeGrid Objekt.
Würd ich das Debuggen/beheben in der folgenden Weise:
diese.myCustomParam und test
createDelegate
(http://dev.sencha.com/deploy/dev/docs/source/Function.html#method-Ext.util.Functions-createDelegate)
und test
HAFTUNGSAUSSCHLUSS: Einige von denen nicht gute, je nach Ihrer DwrProxy etc (die wir nicht sehen können, der code für)
Den proxy keinen Zugriff auf die variable, da es nicht definiert ist, in den Anwendungsbereich der proxy selbst. Ich habe Schwierigkeiten mit Dinge wie diese in der Vergangenheit dachte ich, dass die Komponenten handeln würde, wie Verschlüsse und verfolgen Sie die variable, aber Sie nicht.
Können Sie Ihr problem lösen, indem er den Umfang des Gitters, um die handler-Funktion explizit, indem es eine Stellvertretung, was Sie tun müssen, um für den Wandel ist, dass die variable, die Sie möchten den Zugriff auf eine Instanz-variable anstatt nur eine lokale variable.
Änderungen:
Hoffe das hilft dir, viel Glück