verwenden Ich habe Arbeitscode umgebildet, um richtige Objekte zu verwenden, und jetzt kann ich AJAX.Request von Prototype nicht ordnungsgemäß ausführen. Der Code ist unten, es ist in Zusammenhang mit YUI Datatable arbeiten:Eigene Callback-Methoden für die AJAX-Anforderung in Prototyp
SearchTable.prototype.setTableColumns = function (transport) {
this.dataTableColumns = transport.responseText.evalJSON();
this.dataTableCallback();
};
SearchTable.prototype.setTableConfiguration = function (transport) {
this.dataTableConfiguration = transport.responseText.evalJSON();
this.dataTableCallback();
};
SearchTable.prototype.show = function() {
....
new Ajax.Request(this.dataProxy, {
method: 'get',
parameters: {
format: 'json',
param: 'columns'
},
onSuccess: this.setTableColumns
});
new Ajax.Request(this.dataProxy, {
method: 'get',
parameters: {
format: 'json',
param: 'configuration'
},
onSuccess: this.setTableConfiguration
});
}
};
SearchTable.prototype.dataTableCallback = function() {
....
}
Mein Problem ist, dass dataTableCallback
nie aufgerufen. Scheinbar wirft es eine Ausnahme auf, dass this
undefiniert ist, was ich verstehen kann: Callbacks werden im Objektkontext nicht aufgerufen und somit wird this
niemals zugewiesen. Ich habe versucht, callryfying Callbacks, aber gescheitert.
Die Frage ist: Wie kann ich das schaffen?
Danke, dass wir 'this' etwas anderem zugewiesen haben, war der Schlüssel. –
Dennoch ist eine Kombination aus Ihrer und Cédrics Lösung die beste. –
Trotzdem denke ich, dass Sie dies in diesem Beispiel nicht etwas anderem zuweisen müssen. Da setTableColumn als eine Methode von * this * aufgerufen wird, wird * this * in seinem body gesetzt. Das ist das gleiche wie mit Bind(), aber ein bisschen weniger Prototyp-ish :) – Alsciende