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
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.