将'this'对象传递给$ http服务的'then'回调函数

时间:2015-05-15 20:53:34

标签: javascript angularjs callback

我在将'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(){...“在我的代码中可以看到。有任何帮助吗???

3 个答案:

答案 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;
    });
};