Javascript 角尖';这';收回
我在angular应用程序的服务中存储了一个对象,我无法从回调方法中访问“this”。像这样的Javascript 角尖';这';收回,javascript,angularjs,callback,Javascript,Angularjs,Callback,我在angular应用程序的服务中存储了一个对象,我无法从回调方法中访问“this”。像这样的 app.service("myService", ['$http', '$q', function($http, $q) { return ({foo: foo}); this.myObj = {}; function doSomething(param, callback){ p
app.service("myService", ['$http', '$q',
function($http, $q) {
return ({foo: foo});
this.myObj = {};
function doSomething(param, callback){
param++;
callback(param);
}
function foo(param){
doSomething(param, function(responce){
this.myObj.myParam = responce;//'this' is undefined
});
}
});
如何正确访问它?
谢谢……如果
obj
是您希望成为此对象的对象,您可以使用bind
将其设置为函数f
的实际this
,例如:f.bind(obj)
自以下日期起:
bind()方法创建一个新函数,该函数在调用时将其this关键字设置为提供的值[…]
“this”仅保留在函数的当前范围内。在新函数中调用时,“this”会发生变化。大多数人所做的是var,它=这个
app.service("myService", ['$http', '$q',
function($http, $q) {
var that = this;
return ({foo: foo});
this.myObj = {};
function doSomething(param, callback){
param++;
callback(param);
}
function foo(param){
doSomething(param, function(responce){
that.myObj.myParam = responce;//'that' defined
});
}
});
您应该将第一个“this”对象存储到某个变量中。
您应该在回调函数中使用它
app.service("myService", ['$http', '$q',
function($http, $q) {
return ({foo: foo});
var self = this;
self.myObj = {};
function doSomething(param, callback){
param++;
callback(param);
}
function foo(param){
doSomething(param, function(responce){
self.myObj.myParam = responce;
});
}
});
我希望它能对您有所帮助。在您提出新问题之前,请使用搜索功能。下次您会尝试更好的。。。是的,比你强!