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

data.value

Na atividade 5 da aula 3 vemos como fazer o replace para iniciarmos o processo de adequação da data, mas me surgiu uma dúvida. Mesmo a orientação sendo para fazermos o console.log(data), por que ao fazer o os seguintes "comandos" temos os seguintes retornos console.log(this.data) ---> undefined console.log(this.data.value) --->Uncaught TypeError: Cannot read property 'value' of undefined at NegociacaoController.adiciona

5 respostas

E ai Luiz Fernando,

Quando a gente utiliza o this ele pega o elemento padrão que o javascript está percorrendo, infelizmente não sei o código todo, então não sei o que ele estaria representado, e o data acredito que seja a variável que representa a data, então para verificar o erro mesmo, você pode fazer um console.log(this) para ver o que vem, e você verá que não tem nenhuma propriedade data, por isso está retornando undefined, e o console.log(this.data.value) está dando o erro por que justamente ele não consegue ler uma propriedade de alguém que não existe.

Espero ter ajudado!

O atributo de classe é _data e não data. Aliás, no controller nem é atributo, é variável. Poste o seu código para que possamos ver.

Olá.

Por que você está tentando logar a variável data referenciando-a com o this? Essa variável (de acordo com o exemplo do curso) está dentro da própria função que você está trabalhando, logo não precisa do this. Utilizar o this pode te trazer problemas de escopo. Você poderia ter uma variável com o mesmo nome data fora da função e aí teria problemas.

Estou fazendo isso apenas pelo aprendizado e gostaria justamente de saber porque o uso do this me trará problema, compreendi a maneira correta de se fazer ao ver a aula. Segue o código:

class NegociacaoController{

    constructor(){
        let $ = document.querySelector.bind(document);
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');

    }

    adiciona(event){
        event.preventDefault();
        let data = new Date(this._inputData.value.replace(/-/g, ','));
        console.log(data);
        console.log(this.data.value);
    }
}
solução!

Hmmm, vou tentar te mostrar com um exemplo:

var data = "1";

function testando()
{
  let data = "2";
  console.log(this.data);
}

testando();

Qual valor você acha que aparecerá no console? Desculpe, talvez você já soubesse isso e eu tenha te confundido à toa, mas só queria lembrar sobre esse ponto.