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

Passar como argumento uma função ou o Objeto View?

Há alguma vantagem ou desvantagem em enviar para o que o model se encarregue de fazer o update da View a instância da View ao invés de uma função?

No exemplo abaixo, estou invocando o método update na classe ListaNegociacoes

//NegociacaoController

constructor(){
        let $ = document.querySelector.bind(document);

        this._data = $('#data');
        this._quantidade = $('#quantidade');
        this._valor = $('#valor');        

        this._negociacaoView = new NegociacoesView($('#negociacoesView'));
        this._negociacoes = new ListaNegociacoes(this._negociacaoView);
        ...
    }

// ListaNegociacoes

class ListaNegociacoes {

    constructor(view){
        this._negociacoes = [];
        this._view = view;
        this._view.update(this);
    }

    adiciona(negociacao){
        this._negociacoes.push(negociacao);
        this._view.update(this);
    }

    get negociacoes(){
        return [].concat(this._negociacoes);
    }

    limpar(){
        this._negociacoes = [];
        this._view.update(this);
    }
}
3 respostas

Quando li o título parecia que eu tinha entendido tudo :). A descrição da pergunta não ficou tão claro para mim... Vou me apegar ao título...

Pode ser que eu esteja me passado, mas não vejo problema em passar um objeto em vez de uma view. O resultado no fim vai ser o mesmo. A única coisa que podemos pensar é que um objeto tem mais métodos do que apenas o que você está interessado em chamar... Se vc passar só a função, ta garantindo que só existe a chance dela ser chamada.

solução!

Oi Luiz! Funciona, mas como mostro no curso, misturar o modelo do dominio com a view pode lhe causar problemas. Por exemplo, se você quiser utilizar o modelo com Angular ou React trará de reboque uma dependência da view que não faz sentido para esses frameworks. É por isso que aprenderemos a criar proxies desses modelos e esses proxies é que fazem a atualização da view sem você "poluir" seu modelo com a lógica de atualizar a view. Pegou a ideia?

Alberto/ Flávio, entendi a ideia. Obrigado por seus esclarecimentos. Vi que no capítulo posterior este problema é tratado de modo diferente (proxy) e acabou ficando ainda mais claro pra mim.