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

view não atualiza com o _limpaFormulario

o método funciona porém a view não está atualizando...sei que funciona porque ao chamar negociacaoController._inputData recebo o retorno "", conforme especifica pelo método...o que pode estar errado ?

3 respostas

Olá, Fabio. Tudo bem?

Se importaria em compartilhar o código do controle?

Mas a principio suspeito do seguinte: você deve estar definindo uma string vazia para seu this._inputData, atente que você precisa fazer isso para a propriedade textContent.

Estou aqui chutando, pois não vi seu código, mas se você fizesse `this._inputData.textContent = "", funcionaria?

Se sim, por favor faça isso para os demais campos.

Att., Cristina Silva

solução!

Olá Fábio e Cristina, também tive esse problema. Tentei usar o .textContent mas continuou o erro. Então, revisei a aula e não havia aplicado o .value como o professor fez. Assim, tudo funcionou perfeitamente. Inclusive, antes de aplicar o .value, estava dando erro no .focus(). Segue código funcionando:

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

  _criaNegociacao() {
    return new Negociacao(
      DateHelper.textoParaData(this._inputData.value),
      this._inputQuantidade.value,
      this._inputValor.value
    );
  }

  _limpaFormulario() {
    this._inputData.value = '';
    this._inputValor.value = 1;
    this._inputQuantidade.value = 0.0;
    this._inputData.focus();
  }
}

Bom dia Cristina e Diego !!

Acertaram...eu não havia aplicado o .value...agora está tudo OK! Muito Obrigado !!

Abraços Fabio