4
respostas

Lendo o this dentro do método

Prezados,

O código abaixo esta funcionando.

Mas quando tento usar o this.dashboardView dentro de um método sem armazena-lo em uma variável, da um erro dizendo que a propriedade não pode ser lida.

"Cannot read property 'dashboardView' of undefined"

Sou novato em OO e ainda estou perdido nos conceitos.

class DashboardController {

    constructor () {

        this.dashboardView = new DashboardView("#grid-dashboard");
    }

    clearData () {

        let dashboardView = this.dashboardView;

        dashboardView.clear();
    }

    getData (nodes) {

        let dashboardView = this.dashboardView;

        nodes.map(function(n) {

            var url = `http://${n.Node}:3000/services`;

            var xhr = new XMLHttpRequest();

            xhr.open("GET", url);
            xhr.addEventListener("load", function() {

                var json = xhr.responseText;
                var services = JSON.parse(json);
                services.forEach(function(service) {

                    if (!service.Status) {

                        dashboardView.create(n.Node, service.Name);
                    }
                });
            });

            xhr.send();
        });
    }
}
4 respostas

Em qual linha dá o erro?

dashboardView.create(n.Node, service.Name);

Mas quando eu troco para

this.dashboardView.create(n.Node, service.Name);

O programa não sabe quem é o this que você se refere. Quem você se refere neste this?

O do this.dasboardView está instânciando um objeto em outra classe que constrói uma view, não sei se usei os termos corretos.

Eu tinha entendido que se tornava esse objeto e assim poderia usar métodos das outra classe.

Mas se eu salvo o this em outra variável funciona.

O código que colei no post está funcionando