My service is:
myApp.service('userService', [ '$http', '$q', '$rootScope', '$location', function($http, $q, $rootScope, $location) { var deferred; deferred = $q.defer(); this.initialized = deferred.promise; this.user = { access: false }; this.isAuthenticated = function() { this.user = { first_name: 'First', last_name: 'Last', email: 'email@address.com', access: 'institution' }; return deferred.resolve(); }; } ]);
I’m calling this in my config
file via:
myApp.run([ '$rootScope', 'userService', function($rootScope, userService) { return userService.isAuthenticated().then(function(response) { if (response.data.user) { return $rootScope.$broadcast('login', response.data); } else { return userService.logout(); } }); } ]);
However, it complains that then
is not a function. Aren’t I returning the resolved promise?
Advertisement
Answer
From your service method:
function serviceMethod() { return $timeout(function() { return { property: 'value' }; }, 1000); }
And in your controller:
serviceName .serviceMethod() .then(function(data){ //handle the success condition here var x = data.property });