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

Código apresenta erro

Após a mudança no get negociacoes() incluindo o return[] ... , na classe NegociacaoController está mostrando erro no inputData.focus();

" Uncaught TypeError: this._inputData.focus is not a function"

    class ListaNegociacoes{ 

        constructor(){

            this._negociacoes = [];

        }

        adiciona(negociacao){

            this._negociacoes.push(negociacao);

        }

        get negociacoes(){

             return [].concat(this._negociacoes); 
        }
    }
    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(this._criaNegociacao());
            this._limpaFormulario();

            console.log(this._listaNegociacoes.negociacoes);

    }

        _criaNegociacao(){

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

        _limpaFormulario(){

            this._inputData = "";
            this._inputQuantidade = 1;
            this._inputValor = 0.0;

            this._inputData.focus();
        }
    }
2 respostas
solução!

Boa noite, Grasiela! Como vai?

O problema é que dentro do método _limpaFormulario() vc fez this._inputData = "" atribuindo uma string ao _inputData! De modo que, como strings não possuem o método focus(), vc acaba obtendo esse erro que está ocorrendo!

Para resolver, vc precisar implementar o método _limpaFormulario() como feito pelo mestre Flávio durante o curso! Segue a implementação correta:

_limpaFormulario(){

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

     this._inputData.focus();
}

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, minha aluna!

Muito obrigada pela atenção e explicação. Problema resolvido.