Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

View X Model

Seria errado passar o NegociaçõesView como parâmetro no construtor do NegociacoesModel para usar o update da view quando invocado o método adiciona/apaga ?

Exemplo:

class NegociacoesController{
    constructor(){
        let $ = document.querySelector.bind(document);
        //this._negociacoes           = new NegociacoesModel(model => this._negociacoesView.update(model));
        this._negociacoesView     = new NegociacoesView($("#negociacoesView"));
        this._mensagemView         = new MensagemView($("#mensagemView"));
        `**this._negociacoes           = new NegociacoesModel(this._negociacoesView);**`
}
class NegociacoesModel{

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

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

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

    esvazia(){
        this._negociacoes = [];
        `**this._view.update(this._negociacoes);**`

    }
}
1 resposta
solução!

No mundo da programação não existe o errado e o certo e sim as boas práticas , consequentemente é assim que nasce as arquiteturas de software e padrões de projeto para que possamos ter um padrão bem definido do nosso código e facilitar manutenção e escabilidade do mesmo.

Neste seu caso ao passar a view para o model você estaria ferindo o padrão MVC, que é o adotado no curso. O correto desta arquitetura é o fluxo que está desenhado na imagem contida no link abaixo:

https://koenig-media.raywenderlich.com/uploads/2016/04/diagram-mvc-480x241.png

View alterada => Notifica controller => Controller atualiza/ ou cria um novo Model a partir dos dados recebidos da view(se necessário).

Model alterado => Notifica controller => Controller atualiza os dados da view relacionada a este modelo.

Dá para perceber que a unica função do controller é fazer este "meio campo" entre o seu view e o model, a view contém os dados da tela, e o model é a representação de algum modelo do nosso sistema em código. Separando bem qual a responsabilidade de cada camada dentro desta arquitetura