1
resposta

Não consigo achar o erro

Não consigo achar o erro, quando faço a inclusão da minha negociação a quantidade sempre da undefined, já olhei todo o cod mas não consigo localizar o erro e no console não apresenta nenhum erro

NegociacaoController v

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

    this._inputData = $("#data");
    this._inputQuantidade = $("#quantidade");
    this._inputValor = $("#valor");

    this._listaNegociacoes = new ListaNegociacoes();
    this._negociacoesView = new NegociacaoView($('#negociacoesView'));


    this._negociacoesView.update(this._listaNegociacoes);
  }

  adiciona(event) {
    event.preventDefault();

    this._listaNegociacoes.adiciona(this._criaNegociacao());
    this._negociacoesView.update(this._listaNegociacoes);

    this._limpaFormulario();
  }

  _criaNegociacao() {
    return new Negociacao(
      DateHelper.textoData(this._inputData.value),
      this._inputQuantidade.value,
      this._inputValor.value
    );
  }

  _limpaFormulario() {
    this._inputData.value = "";
    this._inputQuantidade.value = 1;
    this._inputValor.value = 0.0;

    this._inputData.focus();
  }
}

NegociacaoView v

class NegociacaoView {
  constructor(elemento) {
    this._elemento = elemento;
  }
  _template(model) {
    return `
        <table class="table table-hover table-bordered">
            <thead>
                <tr>
                    <th>DATA</th>
                    <th>QUANTIDADE</th>
                    <th>VALOR</th>
                    <th>VOLUME</th>
                </tr>
            </thead>

            <tbody>
              ${model._negociacoes.map(n => `
                    <tr>
                      <td>${DateHelper.dataTexto(n.data)}</td>
                      <td>${n.quantidade}</td>
                      <td>${n.valor}</td>
                      <td>${n.volume}</td>
                    </tr>  

                  `).join('')}
            </tbody>

            <tfoot>
                <td colspan ="3"></td>
                <td>${model.negociacoes.reduce((total, n) => total + n.volume, 0.0)}</td>
            </tfoot>
        </table>
        `;
  }

  update(model) {
    this._elemento.innerHTML = this._template(model);
  }
}
1 resposta

Olá José, tudo bem com você?

Peço desculpas pela demora em lhe responder.

Realizando testes e simulações com o código enviado, em conjunto com o código da Aula, o mesmo foi executado como esperado.

A apresentação do valor undefined pode está relacionado com a declaração do método quantidade da classe Negociacao, caso neste método não tenha sido declarado um retorno (return) o valor da quantidade será impresso na tabela como indefinido. Abaixo um exemplo de como o método deve está declarado.

get quantidade() {   
    return this._quantidade;
}

Sem ter em mãos, o código completo é incerto dizer em qual ponto será necessário realizar correções. Peço que compartilhe o seu projeto completo assim, poderei auxiliar de forma assertiva. Basta adicionar a pasta compactada do projeto em um site de compartilhamento (exemplo: Google Drive) e enviar o link de compartilhamento na resposta desta postagem.

Abraços e bons estudos!

Fico no aguardo e à disposição