this.mensagem = new Bind(new Mensagem(),["msg"],this.msgView);
class ProxyFactory{
// proxy factory foi criada para enxutar o controle//
static CreateProxy(object,props,action){
return new Proxy(object,{
get: function(target,prop,recieve){
if(props.includes(prop)&& typeof(target[prop])==typeof(Function)){
return function(){
console.log(prop);
console.log(this)
console.log(arguments);
// inserido negociacao na lista//
Reflect.apply(target[prop],target,arguments);
// atualizando a view//
return action(target);
}
}
return Reflect.get(target,prop,recieve);
},
set: function(target,prop,value,recieve){
if(props.includes(prop)){
action(target);
}
return Reflect.set(target,prop,value,recieve);
}
});
}
}
class Mensagemview{
constructor(tag){
this.tag = tag;
}
gerarMsg(model){
console.log(this.tag.firstChild.classList);
if(model.msg!=""){
this.tag.firstChild.classList.add("alert");
this.tag.firstChild.classList.add("alert-info");
this.tag.firstChild.textContent = model.msg;
}
}
}
class Bind{
// pode haver retorno dos construtores js//
constructor(modelo,props,view){
let proxy = ProxyFactory.CreateProxy(modelo,props, modelo=>{
view.gerarMsg(modelo)
});
view.gerarMsg(modelo);
return proxy;
}
}
o meu ta um pouco diferente pq estava tentando outras coisas. o meu metodo de gerar a mensagem na view nao esta sendo exibido.