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
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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
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
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.