Angular js returning undefined object from factory

ajax, angularjs, angularjs-factory, factory

Solution

You need to either use a callback function or just put a return before `$http.get...`

 return $http.get('http://example.com/list').then(function (response) {
     if (response.data.error) {
         return null;
     } else {
         console.log(response.data);
         return response.data;
     }
 });

Problem

I have a controller and factory defined as below. ``` myApp.controller('ListController', function($scope, ListFactory) { $scope.posts = ListFactory.get(); console.log($scope.posts); }); myApp.factory('ListFactory', function($http) { return { get: function() { $http.get('http://example.com/list').then(function(response) { if (response.data.error) { return null; } else { console.log(response.data); return response.data; } }); } }; }); ``` What confuses me is that I get the output undefined from my controller, and then the next line of console output is my list of objects from my factory. I have also tried changing my controller to ``` myApp.controller('ListController', function($scope, ListFactory) { ListFactory.get().then(function(data) { $scope.posts = data; }); console.log($scope.posts); }); ``` But I receive the error ``` TypeError: Cannot call method 'then' of undefined ``` Note: I found this information on using a factory through http://www.benlesh.com/2013/02/angularjs-creating-service-with-http.html

Original source