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

Criando nosso ListModel

Prezados,

Temos em "Criando nosso ListModel" (aula 5, módulo 4 curso JavaScript: Conhecendo o Browser e padrões de projeto) a descrição de como criar a tal ListModel queserá uma array protegida contra alterações.

Temos: class ListaNegociacoes {

constructor() {
    this._negociacoes = [] //contruindo um MODELO para armazenar as negociações

}

adiciona(negociacao) { //método para adicionar a negociação
    this._negociacoes.push(negociacao); //push add elemento na array
}

get negociacoes() {

    return this._negociacoes;
}

}

e temos:

class NegociacaoController {

constructor() {

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

          this._inputData = $('#data');
          this._inputQuantidade =  $('#quantidade');
          this._inputValor = $('#valor');
          this._listaNegociacoes = new ListaNegociacoes(); //=====>>>>A DÚVIDA ESTÁ AQUI
}

adiciona(event) {

    event.preventDefault();

    let negociacao = new Negociacao( //
        DateHelper.textoParaData(this._inputData.value),
        this._inputQuantidade.value,
        this._inputValor.value
      );

    this._listaNegociacoes.adiciona(negociacao);

Pelo contexto e testes, a cada evento "adiciona" sava na array negociacoes um novo objeto com os dados capturados da tela. Porém, não entedi como isso está funcionando, sendo que o new ListaNegociacoes() é chamado juntamente com o "adiciona". O new ListaNegociacoes() não deveria criar uma nova array negociacoes sobrescrevendo a anterior?

1 resposta
solução!

Fala Elaine, tudo bem?

O que acontece é que, o constructor de cada classe é chamado cada vez que instânciamos a nossa a classe, e no caso, estamos instânciando a classe ListaNegociacoes no constructor de NegociacaoController, e a classe NegociacaoController é instânciada na tag script no nosso index.html que é recarregada a cada vez que atualizamos a página, ou seja, as classes NegociaçaoController e ListaNegociacoes são instânciadas apenas quando a página é recarregada, sendo assim, é criada apenas uma array vazia a cada carregamento da página, ja que quando recarregamos, NegociacaoController é instâciada, e essa mesma classe instância ListaNegociacoes criando uma array vazia. Quando executamos o evento, é chamado apenas o método adiciona.

Espero ter ajudado, abraços e bons estudos :D