AngularJS,回调和变量范围

时间:2014-08-11 07:12:41

标签: javascript angularjs callback

我实际上遇到了一般的javascript问题。实际上,我需要在两个不同的文件中调用回调后更新列表。

这是我对回调的描述:

 this.modify = function(){
    var self = this;
    var success = function(){
      self.user = self.userEdit;
    };

    var err = function(data){
      alert(data);
    };

    UserService.put(this.userEdit, success, err);
  }
}

这是调用回调的函数:

 UserService.put = function (data, succ, err) {
        var user = {login:data.login,nom:data.nom,prenom:data.prenom,password:data.password};
        $http({
            url: __ADRS_SRV__ + "user/"+data._id,
            method: "PUT",
            data:user,
            isArray: true
        }).success(function(data){
           succ();
        }).error(function(error){
            err(error);
        });
    }

事实上,

var success = function(){
      self.user = self.userEdit;
    };

似乎无法正常工作,当我在回调调用中记录self.user时,我得到了一个未定义的...

你有想法绕过这个吗?

感谢您提前

1 个答案:

答案 0 :(得分:1)

在声明this函数之前,您必须记住selfsuccess

var self = this;
var success = function(){
  self.user = self.userEdit;
};

或者替代方法是使用this,但将函数绑定到this变量:

var success = function() {
  this.user = this.userEdit;
}.bind(this);

希望这有帮助。