Angular how to return value from http.post success

2019-07-21 10:04发布

问题:

i have a code in my angular controller

$scope.message = '';
$http.post('/save/').success(function(data) {                  
    $scope.message = "success";
});
console.log($scope.message);
//get empty string?

why after i run, i get empty string on $scope.message? how http.post when success return value because i want to reuse the value for my another function. thanks anyway.

回答1:

What you are looking for is this:

$scope.$watch("message", function(value){
  console.log($scope.message);
}); 

Here is a sample plnkr example I've made



回答2:

What about doing -

$scope.message = '';
$http.post('/save/').success(function(data) {                  
    $scope.message = "success";
    console.log($scope.message);
});

?

or am I missing something else?



回答3:

why after i run, i get empty string on $scope.message?

The success callback for $http is called asynchronously, when the response is available. This explains why the console.log() can run before the callback. If another function needs the value, @ShaiRez provided two solutions already:

  1. call the other function inside the success callback
  2. $watch the value, and call the other function inside the $watch listener callback