我在将'this'对象传递给$ http服务的'then'回调函数时遇到问题,如下所示
var Product = function(){
this.name = "putty";
this.price = 760;
$http.post(url, data).then.call(this, function(){
this.saved = true;
});
};
当我在语句this.saved = true中检查'this'对象时,我意识到它指向全局对象,而不是指向Product的实例,因为我有“then.call(this,function( ){...“而不是”then(this,function(){...“在我的代码中可以看到。有任何帮助吗???
答案 0 :(得分:6)
使用then.call(this, function(){});
时,您将then
函数称为this
,但这不会影响您传递的实际回调函数的this
值。
如果您想将this
绑定到回调,可以使用bind
:
$http.post(url, data).then(function(){
this.saved = true;
}.bind(this));
答案 1 :(得分:-1)
为此分配var并改为使用该var。见下文
var Product = function(){
var self = this;
self.name = "putty";
self.price = 760;
$http.post(url, data).then(function(response){
self.saved = true;
});
};
答案 2 :(得分:-1)
您需要重新分配它:
var Product = function(){
this.name = "putty";
this.price = 760,
self = this;
$http.post(url, data).then.call(this, function(){
self.saved = true;
});
};