我遇到了类似于以下带有dojo deferred的代码的问题:-
这是 XXX.js 文件
dojo.declare('XXX', [dijit._Widget, dijit._Templated], {
postCreate: function() {
//getting deferred from somewhere
var _this = this;
deferred.then(function(response) {
console.log("This is getting printed");
_this.watch("value", function(A, B, C) {
console.log("This is not getting printed");
var value = _this.get("value");
_this.onValueChange(value);
});
}
我用以下代码将此类从其他 JS 文件中调用:-
this.object = new XXX({
//some args
}
dojo.connect(this.object, "onValueChange", function(value) {
console.log("I am here");
this.onValueChange(value);
});
当我在没有 deferred.then 的情况下使用相同的“watch”时,它工作得非常好,但现在当我更改表单中的值时它没有执行该函数。任何指针?可能是因为当我的“this.object”被创建时,deferred 没有执行“then”中的函数?