Fehlende _Diese Definition

stimmen
1

Ich habe eine Funktion in einem Objekt definiert wie folgt aus:

    connect(callback?: (connected: bool) => void) {
        $.ajax(this.url + /connect, $.extend(true, {}, this.ajaxSettings, {
            success: (data) => {
                this.errorChecker(data, (data) => {
                    if (callback != null) {
                        callback(data);
                    }
                });
            },
            timeout: this.timeout,
            error: () => {
                if (callback != null) {
                    callback(false);
                }
            }
        }));
    }

Der Typoskript Compiler nimmt das und produziert diese:

        VAS.prototype.connect = function (callback) {
            $.ajax(this.url + /connect, $.extend(true, {
            }, this.ajaxSettings, {
                success: function (data) {
                    _this.errorChecker(data, function (data) {
                        if(callback != null) {
                            callback(data);
                        }
                    });
                },
                timeout: this.timeout,
                error: function () {
                    if(callback != null) {
                        callback(false);
                    }
                }
            }));
        };

Beachten Sie die folgende Zeile in dem js:

_this.errorChecker(data, function (data)

Der Compiler hat bemerkt richtig meine Verwendung des Operators => und festgestellt , dass thisin meiner ursprüngliche Typoskript auf das übergeordnete Objekt beziehen sollte und nicht was auch immer , thiswenn der Erfolg Rückruf tatsächlich passiert sein heißt. Aber aus irgendeinem Grund hat der Compiler die magische Linie schließen vergessen:

var _this = this;

Zu Beginn der Funktion. Ist das ein Fehler? Oder ist dies durch Design? Wenn es nur die _this ignoriert / dieses Ding überhaupt, würde ich nur sagen, dass ich falsch mache es, aber es wird auf halbem Weg hier, die ich denke, macht etwas falsch ist.

Update : seltsam das scheint ein Problem mit dem Compiler in Visual Studio zu sein, wenn ich den gleichen Code in dem kopiere Spielplatz es wie erwartet funktioniert.

Veröffentlicht am 08/10/2012 um 18:33
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Das sieht aus wie ein Bug. Sie sollten einen öffnen Workitem diese zu verfolgen.

Beantwortet am 08/10/2012 um 18:51
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more