我正在使用ExtJS框架。
在我的reader.onload fn中我发出一个Ajax请求,在成功函数中,我使用"这个"来调用另一个函数,但是"这个"未定义。
reader.onload = function(e){
//do stuff
Ext.Ajax.request({
url:url,
params:params,
method:"POST",
scope:this,
success:function(resp){
//decode resp;
console.log(this);//FileReader obj, not the controller obj this code is in
if(resp.something){
this.foo(resp); //this.foo isundefined
}
}
});
};
在另一篇文章的其他地方,有人回答了传递范围:
reader.onload = (function(e){
//do stuff
}(this));
但是当我这样做时," e"变得不确定。
答案 0 :(得分:2)
您可以使用self
等内容保留对所需对象的引用。
var self = this;
reader.onload = function(e) {
...
Ext.Ajax.request({
url:url,
params:params,
method:"POST",
scope:self,
success:function(resp){
if(resp.something){
this.foo(resp);
}
}
});
};