_Es faltante definición

votos
1

Tengo una función definida en un objeto como éste:

    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);
                }
            }
        }));
    }

El compilador mecanografiado detiene y produce esto:

        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);
                    }
                }
            }));
        };

Tenga en cuenta esta línea en el js:

_this.errorChecker(data, function (data)

El compilador ha notado correctamente mi uso del operador => y concluyó que thisen mi mecanografiado original debe referirse al objeto padre y no lo thispasa a ser cuando la devolución de llamada de éxito se llama en realidad. Pero, por alguna razón, el compilador ha olvidado incluir la línea mágica:

var _this = this;

Al comienzo de la función. Es esto un error? O se trata por diseño? Si sólo ignoró las _Es / esto por completo, sólo diría que estoy haciendo mal, pero va a mitad de camino aquí que me hace pensar que algo está mal.

Actualización : por extraño que esto parece ser un problema con el compilador en Visual Studio, si copio el mismo código en el parque funciona como se esperaba.

Publicado el 08/10/2012 a las 18:33
fuente por usuario
En otros idiomas...                            


1 respuestas

votos
0

Esto parece un error. Debe abrir un elemento de trabajo para realizar un seguimiento de este.

Respondida el 08/10/2012 a las 18:51
fuente por usuario

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