12
respostas

Undefined na linha 26 de NegociacaoController

Fiz o código junto com o professor, mas deu um erro que está aparecendo quando eu clico em inserir. Aparece "undefined", não consegui achar o erro. Por favor me ajudem.

Código do NegociacaoController.js

class NegociacaoController {

constructor() {

let $ = document.querySelector.bind(document);
this._inputData = $('#data');
this._inputQuantidade = $('#quantidade');
this._inputValor = $('#valor');
this._listaNegociacoes = new ListaNegociacoes();

}

adiciona(event) {

event.preventDefault();

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

this._listaNegociacoes.adiciona(negociacao);
this._limpaFormulario();

console.log(this._listaNegociacoes.negociacoes);

}

_limpaFormulario() {

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

this._inputQuantidade.focus();

} }

12 respostas

Fala Kayan, tudo bem? Espero que sim!

Eu ja te respondi em um outro tópico, continuamos por lá, ok?

Abraços e bons estudos :D

Olá, desculpe a demora. Aqui está o código

class ListaNegociacoes {
  constructor() {

    this._negociacoes = [0]
  }

  adiciona(negociacao) {

    this._negociacoes.push(negociacao);
  }

  get Negociacoes () {

    return this._negociacoes;
  }
}

Na classe ListaNegociacoes você cria um getter Negociacoes, porém no método adiciona da classe NegociacaoController você tenta acessar this.listaNegociacoes.negociacoes sendo assim não é possivel encontrar a propriedade negociacoes. Para resolver basta colocar get Negociacoes em lower case, assim:

  get Negociacoes () {

    return this._negociacoes;
  }

Olá, eu fiz isso mas não deu certo, ainda está aparecendo undefined na linha 25 de NegociacaoController.js

Está assim meu código:

class NegociacaoController {

  constructor() {

    let $ = document.querySelector.bind(document);
    this._inputData = $('#data');
    this._inputQuantidade = $('#quantidade');
    this._inputValor = $('#valor');
    this._listaNegociacoes = new ListaNegociacoes();
  }

  adiciona(event) {

    event.preventDefault();

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

    this._listaNegociacoes.adiciona(negociacao);
    this._limpaFormulario();

    console.log(this._listaNegociacoes.negociacoes);
  }

  _limpaFormulario() {

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

    this._inputQuantidade.focus();
  }
}

Tentei achar o erro mas não consegui.

Kayan, na classe ListaNegociacoes você deve renomear get Negociacoes para get negociacoes, você fez isso? Poderia mostrar o código novamente de ListaNegociacoes?

Olá, fiz isso e deu certo, não está mais aparecendo undefined, porém não sei se está certo. Está assim quando se clica em incluir: Imagem do console

Do professor aparece "Array" e não (2) [0, Negociacao], está certo? Era para aparecer assim? Ou está errado alguma coisa?

Consegue me mandar seu projeto compactado por favor pra eu dar uma olhada melhor? (Você pode subir ele no drive e me mandar o link, mas lembre-se de deixar o link publico)

Olá, bom dia. Desculpe-me a demora. Estava na escola. Mas aqui está o arquivo compactado:

Aqui está

Na classe ListaNegociacoes, retire o 0 dentro da array:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Essa linha deve ficar assim:

this._negociacoes = []

this._negociacoes deve ser um array vazio

Olá! Bom dia. Eu deixei o array vazio. Atualizei a página, e agora está assim: Ficou assim

Está certo? É para ficar assim? Me perdoe pela demora novamente.

Olá! Bom dia. Eu deixei o array vazio. Atualizei a página, e agora está assim: Ficou assim

AssimEstá certo? É para ficar assim? Me perdoe pela demora novamente.

Ta tudo bem demorar Kayan! Ja te respondi no outro tópico, tabom?