How do I return data from a $http.get() inside a factory in angularjs
angularjs, javascript
Solution
Use defer:
obj.getResponse = function(){
var temp = {};
var defer = $q.defer();
$http.get('hello.php').success(function(data){
alert(data);
temp =data;
defer.resolve(data);
});
return defer.promise;
}
Problem
I'm having a lot of trouble with this and I can't seem to find anything here on SO or Google that helps me spot what I'm doing wrong ``` <!DOCTYPE html> <html data-ng-app="testApp"> <head> <title></title> </head> <body> <div data-ng-controller="myController"> {{test}}<br/> {{test2}}<br/> {{test3}} <ul> <li data-ng-repeat="member in members">{{ member.firstname}}</li> </ul> </div> <script type="text/javascript" src="angular.min.js"></script> <script type="text/javascript"> angular.module('testApp', ['memberFactory']); angular.module('testApp',[]) .factory('memberFactory', function($http){ var obj = {}; obj.data = "abcd"; obj.getResponse = function(){ var temp = {}; $http.get('hello.php').success(function(data){ alert(data); temp =data; }); return "some return value"; } return obj }); function myController($scope, memberFactory){ $scope.test= "testString"; $scope.test2= memberFactory.data; $scope.test3= memberFactory.getResponse(); } </script> </body> </html> ``` the `return "some return value";` works but when I try to return temp, its null. I have tried various ways to get this to work but I just can't seem to set the temp value inside the `$http.get()` function It is probably something simple (or a silly mistake/misguided approach on my part). Any advice would be greatly appreciated