Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

getDate of undefined

Segui ate agora normalmente o curso, porem ao adicionar a view o meu helper comecou a dar problema. Alguem sabe o que pode ser?

NegociacaoController.js

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();
    console.log(this._listaNegociacoes.negociacoes)
  }

...

NegociacaoView.js

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 => `
        <tr>
          <td>${DateHelper.dataParaTexto(n.data)}</td>
          <td>${n.quantidade}</td>
          <td>${n.valor}</td>
          <td>${n.volume}</td>
        </tr>
      `).join('')}
    </tbody>

    <tfoot>
    </tfoot>
  </table>
  `
  }

  update(model) {
    this._elemento.innerHTML = this._template(model);
  }
}
4 respostas

Patric, beleza?

Eu examinei teu código, comparei com o do meu curso, não encontrei falha. Você consegue subir teu projeto completo no Github?

Beleza Marco, muito obdigado pela ajuda. Liberei o repositorio no github, valeu.

https://github.com/PatricSPires/Javascritp_I

solução

Patric,

Acredito consegui achar! Teu código esta correto, o que ocorreu é que nos getters do modelo Negociacao, você usou letra maiuscula, por isto a função template que esta usando os getters com letra minusculas não esta achando e retornando undefined.

O teu código:

          <td>${DateHelper.dataParaTexto(n.data)}</td>
          <td>${n.quantidade}</td>
          <td>${n.valor}</td>
          <td>${n.volume}</td>

Alterar, data, quantidade, valor e volume para: Data, Quantidade, Valor e Volume

              <td>${DateHelper.dataParaTexto(n.Data)}</td>
              <td>${n.Quantidade}</td>
              <td>${n.Valor}</td>
              <td>${n.Volume}</td>

Veja que na declaração de Negociacao.js, como você definiu os nomes dos getters:

Por favor faça um teste e por gentileza se resolver a questão marcar o status desta discussão como resolvido!

Um abs.

Oi Marco, muito obrigado. Deu muito certo :D.