Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

Usar bind funciona tambem

class NegociacaoController {

    constructor() {

        // a variável self guarda uma referência para this, instância de NegociacaoController

        // aqui usei uma function tradicional, mas poderia ser uma arrow function também

        this._listaNegociacoes = new ListaNegociacoes(function(model) { 
            this._negociacoesView.update(model);
        }.bind(this));
    }

    // código posterior omitido
}
5 respostas

Olá Ernst ! Tudo bem? Não entendi bem o contexto do seu post. Pode deixar um pouquinho mais claro para mim?

Ah, eu aproveitei também e editei o seu posto para que que o código ficasse mais bem formatado.

Aguardo seu retorno.

Ah, entendi! Pode fazer isso sim! :) Gostei!!!!!! Mas com a arrow function fica mais bonitinha, porque não precisa nem do self nem do bind. :)

solução!

Bom dia Flavio!

Copie o código que estava na aula ;)

Coloquei isso como um exemplo que pode ser usado tambem. Tinha opção de usar let self = this; usar arrow function.

Ai percebi que dava pra usar bind tambem seria mais uma opção mas talvez seja algo mais voltado para javascript antes do ES6

Vou até marcar sua resposta como solução para que ganhe os pontos!

Prepare-se, ainda há um terceiro curso de JavaScript!

Olá Flávio,

Tive o mesmo pensamento que o Ernst Koetsier, vim procurar se existia um post sobre isso e já existia, ótimo!

Porém em uma das respostas você citou:

"...Ah, entendi! Pode fazer isso sim! :) Gostei!!!!!! Mas com a arrow function fica mais bonitinha, porque não precisa nem do self nem do bind. :)..."

E aí eu fiquei com dúvida.

Na aula 1, item 3 é exibido um exemplo de como passar o this da classe controller para ser usado como this dentro da classe ListaNegociacoes, mais apenas dentro de uma função específica. Par isso você usou a API de Reflection.

Eu achei que fazer isso usando o bind, além de ser mais fácil. Nós escrevemos menos códio. Então qual a diferença entre passar esse contexto como parâmetro e usar a API de Reflection ou através do bind ?

Abs