Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Chamada da função value do input dentro do constructor não retorna o valor.

Prezados, boa noite.

Segue a duvida e os códigos:

    constructor() {
        this._inputData = $('#data').val();
        this._inputQuantidade = $('#quantidade').val();
        this._inputValor = $('#valor').val();
    }
    adiciona(event) {
        event.preventDefault();
        console.log(this._inputData);
        console.log(this._inputQuantidade);
        console.log(this._inputValor);
    }

Saída no console fica da seguinte forma:

        console.log(this._inputData);  // resultado: vazio
        console.log(this._inputQuantidade) // resultado: 1
        console.log(this._inputValor) // resultado: 0.0

Porém caso a função val() seja chamada conforme abaixo a saída no console acontece com os valores corretos.

    constructor() {
        this._inputData = $('#data');
        this._inputQuantidade = $('#quantidade');
        this._inputValor = $('#valor');
    }
    adiciona(event) {
        event.preventDefault();
        console.log(this._inputData.val());
        console.log(this._inputQuantidade.val());
        console.log(this._inputValor.val());
    }

Com isso o que muda para que essa modificação do local da chamada da função val() para dentro do contructor ocasione o retorno no console conforme explanado acima, no caso vazio, 1 e 0.0.

Desde já agradeço;

vlw!

1 resposta
solução!

Boa tarde. Não entendi se o que você postou é uma dúvida ou uma afirmação. Independente disso, vamos revisar a questão.

Primeiramente, só para deixar claro, em nenhum momento do curso eu faço isso:

constructor() {
        this._inputData = $('#data').val();
        this._inputQuantidade = $('#quantidade').val();
        this._inputValor = $('#valor').val();
    }

Como você percebeu, não funcionará. Você precisa guardar no constructor os elementos que sabem dizer a qualquer momento o valor atual dos campos e não os valores dos elementos. Se guardar os valores que eles armazenam, jamais conseguirá obter através dos cliques do botão os valores atualizados do formulário. É por isso que o acesso ao val() é feito a cada clique, para obter o valor atual dos campos. Porém, vira e mexe alguns alunos querem simplificar o código, trazendo o acesso ao val() para dentro do construtor e, como nós vimos, isso não funcionará.

Sucesso e bom estudo.