我在我的角度应用中将对象存储在服务内部,我无法访问这个'这个'来自回调方法。像这样......
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
});
}
});
如何正确访问? 谢谢......
答案 0 :(得分:1)
'this'仅保留在函数的当前范围内。当在一个新函数内部调用'this'时会发生变化。大多数人所做的是var that = this;
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
});
}
});
答案 1 :(得分:0)
如果<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>
<button>choose file</button>
<input type="file" style="opacity:0;"/>
是您要成为的对象,则可以使用obj
将其设置为函数bind
的实际this
,作为示例:f
。
bind()方法创建一个新函数,在调用时,将其this关键字设置为提供的值[...]
答案 2 :(得分:0)
您应该将第一个“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;
});
}
});
我希望它对你有所帮助。