You need to return in your Factory the defer object. Currently you are 
returning nothing, thtas why its undefinied

i've made an example, hopefully you will understand it. (But really, i 
think theres only missing in your factory the 

return  defferred.promise;)

http://plnkr.co/edit/WbfIwE0hX8AToubsTsKs?p=preview



Am Freitag, 18. Dezember 2015 04:00:30 UTC+1 schrieb Garwan50:
>
> Hi,
>
> i'm trying to communicate with themoviedb API.
>
> I have to use promise but clearly i dont know how to use them.
>
> I want to set a property of my controller with the data i get.
>
> I use a factory service :
>
> app.factory('tmdb', ['$http', '$q', '$log', function($http, $q, $log) {
>   return {
>     movie: function(id) {
>       var deffered = $q.defer();
>       $http.get('
> https://api.themoviedb.org/3/movie/'+id+'?api_key=3b21647fbda0a5b52703c04d6e74169e&language=fr').then(function(response)
>  
> {
>
>         $log.info(response); // what i want
>
>         $log.info(deffered.resolve(response)); // undefined :c
>         return deffered.resolve(response); // promise
>       });
>     }
>   };
> }]);
>
>
> so it returns a promise of a result.
>
> app.controller('MovieCtrl', ['$http', '$log', 'tmdb', function($http, 
> $log, tmdb){
>   var promise = tmdb.movie(504);
>   promise.then(function(response) { // error Uncaught TypeError: Cannot 
> read property 'then' of undefined
>     this.movie = response;
>     console.log(this.movie);
>   });
> }]); 
>
>
> and in my controller i fetch data for movie id 504.
>
> but the movie method returns a undefined type, however, if i 
> $log.log(response), it gives me the data i want.
>
> promise and http request are new to me, so i guess i don't know how to use 
> it yet, i've been looking for a solution all day but nothing.
>
> Tell me if you need more information,
> Thanks!
>

-- 
You received this message because you are subscribed to the Google Groups 
"AngularJS" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/angular.
For more options, visit https://groups.google.com/d/optout.

Reply via email to