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

Ao clicar em adicionar só aparece a mensagem e nada é adicionado

Bom dia ao clicar no botão que adiciona a minha negociação ele só me retorna uma mensagem mas nada é adicionado a minha tabela alguém poderia me explicar o porque? o link para o projeto é esse: https://github.com/Kadugrizzo/Javascriptadv

6 respostas

Oi Henrique, tudo bem ?

Analisando neste momento o seu código que está no github, pude perceber que isto acontece devido a um pequeno errinho. No arquivo NegociacaoController.js na linha 9 é definido o seguinte:

this._listaNegociacoes = new ListaNegociacoes();

Mas o nome da sua classe referente a lista de negociações, tem o nome:

class listaNegociacoes {
      ...
}

Então, o código na linha 9 irá procurar por ListaNegociacoes quando na verdade foi definido listaNegociacoes. Modifique isto e seu código adicionará os valores à tabela. Exemplo:

this._listaNegociacoes = new listaNegociacoes();

Qualquer dúvida estou a disposição. Espero ter ajudado. Bons estudos!!!

De novo não sei se eu fui claro quanto ao meu problema, a minha lista aparece normalmente o problema acontece que ao tentar adicionar algo na minha lista ele não adiciona nada, apenas me mostra a mensagem de que algo foi adicionado a tabela mas ela continua zerada, se eu faço a alteração que vc me sugere o problema passa a ser que ele não mostra a minha lista.

Aqui está o código do meu controller

class NegociacaoController {

  constructor() {

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

    this._negociacoesView = new NegociacoesView($('#negociacoesView'));

    this._listaNegociacoes = new Bind (
            new ListaNegociacoes(),
            this._negociacoesView,
            ['adiciona', 'esvazia']);


    this._mensagemView = new MensagemView($('#mensagemView'));
    this._mensagem = new Bind(
        new Mensagem(),
        this._mensagemView,
        ['texto']);
}



  adiciona(event) {

    event.preventDefault();
    this._listaNegociacoes.adiciona(this._criaNegociacao());
    this._mensagem.texto = 'Negociacao adicionada com sucesso';  
    this._limpaFormulario();
}

apaga() {

  this._listaNegociacoes.esvazia();
  this._mensagem.texto = 'Negociações apagadas com sucesso';
}

    _criaNegociacao(){
       return new Negociacao(
       DateHelper.textoParaData(this._inputData.value),
       this._inputQuantidade.value,
       this._inputValor.value);
    }
    _limpaFormulario(){
      this._inputData.value = '';
      this._inputQuantidade.value = 1;
      this._inputValor.value = 0.0;

      this._inputData.focus();
    }
}
class ListaNegociacoes{

  constructor(){
     this._negociacoes = [];
  }
  adiciona(negociacao){

    this._negociacoes.push(negociacao);

  }
  get negociacoes() {
    return[].concat(this._negociacoes);
  }

  esvazia(){
    this._negociacoes = [];

  }
}

código da lista de negociações

lass ProxyFactory{

    static create(objeto, props, acao){

        return new Proxy(objeto, {

            get(target, prop, receiver){
                if(props.includes(prop) && ProxyFactory._ehFuncao(target[prop])){
                    return function(){

                        console.log(`interceptando ${prop}`);

                        Reflect.apply(target[prop], target, arguments);

                        return acao(target);

                    }
                }
                return Reflect.get(target, prop, receiver)
            },
            set(target, prop, value, receiver){
                if (props.includes(prop)){
                    target[prop] = value;
                    acao(target);
                }
                return Reflect.set(target, prop, value, receiver);

            }

        });
    }
      static _ehFuncao(func){
        typeof(func) == typeof(Function)
      }
}

código do proxy factory

solução!

Henrique, em Proxy Factory na função:

static _ehFuncao(func){
    typeof(func) == typeof(Function)
}

é necessário um retorno, ou seja:

static _ehFuncao(func){
    return typeof(func) == typeof(Function)
}

Modifique isto e obterá o resultado desejado.

Espero ter ajudado.