ich wie so öffentlich Typoskript Typ haben:Typoskript Rückruf an externe Datei Bindung „dieses“ Schlüsselwort
export class Generator {
public generate(settings: GeneratorSettings): void {
$('#' + settings.Id+ "").dataTable({
dom: 'RC<"clear">rti<"bottom"pl>',
sAjaxSource: settings.sourceUrl,
bServerSide: true,
pageLength: 15,
lengthMenu: [15, 25, 50, 100],
fnDrawCallback: (oSettings) => { this.internalCallback(oSettings); settings.publicCallback(); }
});
}
private internalCallback(oSettings: any) {
// Do work
}
In diesem Fall habe ich einen Dritten Bibliothek bin mit (jQuery Tables), die eine Callback-Funktion zur Verfügung stellt. Damit Benutzer, die diesen Typ später verwenden, sich in die Ereignisse einklinken können, habe ich eine öffentliche publicCallback
-Eigenschaft in meine Einstellungen aufgenommen, die diese Art von Benutzern für ihre eigene Funktion festlegen können.
Ein Beispiel für die publicCallback
verwendet wird, ist dies:
In einem HTML-Inline-Skript habe ich:
settings.publicCallback = externalModule.initialise;
Wo externalModule
eine Instanz einer anderen Typoskript Typ ist wie folgt:
export class ExternalModule {
public initialise() {
// Various things happen before here
$("#button").on("click", (event) => {
this.buildIdList(event);
});
}
private process(event: any){
// Doing work
}
Mein Problem liegt in der ExternalModule.initialise
Funktion. Das this
Schlüsselwort an diesem Punkt ist der settings
-Parameter, auf dem die publicCallback
-Eigenschaft vorhanden ist, wie es von dem anderen TypeScript-Modul aufgerufen wird.
Ich habe auf dem Stichwort this
nachgelesen und ich verstehe, warum das passiert, aber ich kann einen Weg darum nicht finden. Ich habe in dem Generator
Typ folgend versuchte dabei:
fnDrawCallback: (oSettings) => { this.internalCallback(oSettings); settings.publicCallback.bind(settings.publicCallback)();
Aber das macht, ist keine Hilfe, wie jetzt die this
Stichwort Punkte bei nur die initialise
Methode.
Wenn Sie Zugang zu diesem haben, müssen Sie es in einer Variablen speichern und auf diese Variable zugreifen – 2426021684
Ich habe nie ein Problem mit dem 'diesen' Kontext, den ich will. Sobald die 'initialize'-Funktion aufgerufen wird, hat 'this' einen Kontext des 'settings'-Parameters - es gibt keine Möglichkeit, den richtigen Kontext zu erfassen. – FLSH