http - angularJS access properties of promised object in succes function -


i have problem can't head around. i'm using basic angular http.get returns promise:

gettask: function(id) {     var promise = $http.get('http://localhost:9000/get/tasks/'+id).success(function(data) {             return data;         });         return promise;     } tasksservice.gettask($stateparams.id).then(function(success){     $scope.task = success.data; }); 

the task has propperties want access, somehow returns undefined. if example do:

tasksservice.gettask($stateparams.id).then(function(success){     $scope.task = success.data;     console.log($scope.task.deadline); }); 

it's undefined. have idea how can access properties , how can share rest of controller?

ah, confusion of .success vs. .then strikes again. subtle (and, in opinion, unnecessary) difference angular introduced have spawn lot of issues.

the issue here .success returns original promise and, in respect, disregards data return. in other words, "branches off" , allows implement handler not affect rest of chain.

to fix, use .then:

return $http.get(url).then(function(response) {   return response.data; }); 

addendum:

to better understand, .success conceptually behaves follows:

promise.success = function(fn) {    promise.then(function(response) {      fn(response.data, response.status, response.headers, config);    });     // original promise returned, not .then promise    return promise; } 

Comments

Popular posts from this blog

symfony - InvalidConfigurationException in SecurityExtension.php line 429: No authentication listener registered for firewall "secured_area" -

angular ui router - 10 digest iterations reached in angularjs when using $state.go -

javascript - Handling constructor related functions while testing with mocha and sinon -