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.
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
What about doing -
$scope.message = '';
$http.post('/save/').success(function(data) {
$scope.message = "success";
console.log($scope.message);
});
?
or am I missing something else?
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:
- call the other function inside the success callback
- $watch the value, and call the other function inside the $watch listener callback