ses ses - 1 month ago 13
JSON Question

AngularJS using $resource service. Promise is not resolved by GET request

Let's say a service like this:

services.factory('User', function($resource){
return $resource('/rest/usersettings/:username', {}, {
get: {method: 'GET'},
update: {method: 'POST'}
});
});


So it is supposed to be used like this:

scope.user = User.get( {username: 'bob'} ); // GET

console.log( JSON.stringify(scope.user) ) // {"$promise":{},"$resolved":false}


So, when I send GET request, it goes OK, building this ur + params:

http://localhost:9000/rest/usersettings/bob


Question, why I have:
{"$promise":{},"$resolved":false}


If my GET request leads to json-response back from the server:
{"username":"bob","email":"bob@bobs.com"}
then I'm expecting to have my
scope.user
filled by data.

Should I wait somehow promise is ready / resolved ?

Answer

User.get( {username: 'bob'} ) does not return your actual data immediately. It returns something will hold your data when the ajax returns. On that (the $promise), you can register an additional callback to log your data.

You can change your code to:

   scope.user = User.get( {username: 'bob'}  );    // GET
   scope.user.$promise.then(function(data) {
       console.log(data);
   });
Comments