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

QUANTIDADE undefined na tabela e VOLUME NaN

Olá, quando abro o browser e clico para incluir, a primeira negociação é incluída normalmente. A partir da segunda inclusão na tabela, a quantidade sempre apresenta "undefined" e na coluna volume "NaN".

Poderia me esclarecer o que está acontecendo? Obrigada desde já!

class NegociacoesView {

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 => {

    return `
        <tr>
          <td>${DateHelper.dataParaTexto(n.data)}</td>
          <td>${n.quantidade}</td>
          <td>${n.valor}</td>
          <td>${n.volume}</td>
        </tr>
        `
  }).join('')}
  </tbody>

  <tfoot>
  </tfoot>
`; }

update(model) {

this._elemento.innerHTML = this._template(model);

}

}

4 respostas

Segue o código do Controller para verificação:

class NegociacaoController {

constructor() {

let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._listaNegociacoes = new ListaNegociacoes();
this._negociacoesView = new NegociacoesView($('#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.textoParaData(this._inputData.value),
  this._inputQuantidade.value,
  this._inputValor.value);

}

_limpaFormulario() {

this._inputData.value = '';
this._inputQuantidade = '1';
this._inputValor.value = '0.0';

this._inputData.focus();

}

}

oi Monica tudo bem ?

Pelo que eu vi aqui, faltarm alguns underlines no método adiciona, indicando privado.

 adiciona(event) {

        event.preventDefault();
        this._listaNegociacoes.adiciona(this._criaNegociacao());
        this._negociacoesView.update(this._listaNegociacoes);
        this._limpaFormulario();
    }

Oi Felipe! Obrigada pela resposta, verifiquei aqui e o meu código contém exatamente os underlines dito por você. Quando copiei aqui ele não estava aparecendo. Tentei mais uma vez aqui usando o " ` ", não sabia que era pra usar isso. Foi bom saber, vou estar atenta a isso quando postar aqui. Segue o código de referência:

 adiciona(event) {
    event.preventDefault();
    this._listaNegociacoes.adiciona(this._criaNegociacao());
    this._negociacoesView.update(this._listaNegociacoes);
    this._limpaFormulario();
  }

De qualquer maneira, sendo assim, essa não é a solução aparentemente. =/

solução!

Já consegui identificar meu erro. Na linha "this._inputQuantidade.value = '1';" não tinha colocado o ".value". Tudo resolvido agora! =)

_limpaFormulario() {

    this._inputData.value = '';
    this._inputQuantidade.value = '1';
    this._inputValor.value = '0.0';

    this._inputData.focus();

  }

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software