AngularJS - 向调用函数返回promise成功值

时间:2014-11-07 23:52:05

标签: javascript angularjs

我正在学习AngularJS和AJAX。我正在尝试将成功函数返回的数据分配给用户。 grantRole属于Auth服务。我目前拥有的用户价值是一种承诺。如何将成功返回的数据分配给用户?

$scope.grantRole = function(user) {

  user = Auth.grantRole(user).then(
    function success(data){
        return data;
    },
    function error(err){
        console.log(err);
    }
 );

grantRole: function(user,callback) {
      var cb = callback || angular.noop;
      var data = {id: user._id,controller:'role'};
       return User.update({id: user._id,controller:'role'},data,
          function(user) {
            return cb(user);
          }, function(err) {
            return cb(err);
          }).$promise;
};

1 个答案:

答案 0 :(得分:0)

作为承诺的用户的当前值是正确的。一旦承诺得到解决,它将被分配给成功返回的数据。

但是在重新分配对象或数组时必须要小心。见Service variable not updating in controller

  

例如,不要这样做:user = ...;

     

相反,请执行以下操作:angular.copy(newInfo,user)或this:user.email = ...

$scope.grantRole = function(user) {

  Auth.grantRole(user).then(
    function success(data){
        angular.copy(data, user);
    },
    function error(err){
        console.log(err);
    }
);