我正在学习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;
};
答案 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);
}
);