require(["dojo/_base/declare","dijit/_WidgetBase","dojo/Stateful"],function(declare,_WidgetBase,Stateful){
MaClasse1 = declare([_WidgetBase,Stateful],{
att1:{'a':'att1_v1','b':'1234'},
id:'mc1',
changerAtt1: function(nv){
this.att1 = nv;
}
});
MaClasse2 = declare([_WidgetBase,Stateful],{
att1:null,
id:'mc2',
constructor: function(att1){
this.att1 = att1;
},
postCreate: function(){
this.watch('att1',function(name,oldValue, value){ // Doesn't work
console.log(name,oldValue, value);
});
}
});
var maClasse1 = new MaClasse1();
var maClasse2 = new MaClasse2(maClasse1.get('att1'));
maClasse1.changerAtt1({'a':'att1_v2','b':'56789'});
});
MaClasse1和MaClasse2類共同具有屬性'att1',這個屬性是兩個類的單個實體,因爲它是一個對象。我不明白爲什麼當更改att1的值時,MaClasse2實例的this.watch
不起作用。任何人都可以向我解釋。dojo狀態監視不起作用
這是我糾正代碼:
require(["dojo/_base/declare","dijit/_WidgetBase"],function(declare,_WidgetBase){
MaClasse1 = declare([_WidgetBase],{
});
MaClasse2 = declare([_WidgetBase],{
});
var att1 = {'a':'att1_v1','b':'1234'};
var maClasse1 = new MaClasse1();
maClasse1.set('att1',att1);
var maClasse2 = new MaClasse2();
maClasse2.set('att1',maClasse1.get('att1'));
maClasse2.watch('att1',function(name, oldValue, value){//<--- this doesn't work
console.log("Execution du watch: ",name, oldValue, value);//<--- this doesn't work
});//<--- this doesn't work
console.log('Avant chgt: ',att1, att1 === maClasse1.get('att1'),att1 === maClasse2.get('att1'));
att1.a = 'att1_v2';
console.log('Après chgt: ',att1, att1 === maClasse1.get('att1'),att1 === maClasse2.get('att1'));
});
請翻譯成英文。 – frank