我对此有很多麻烦,在SO或Google上似乎找不到任何可以帮助我发现自己在做错事情的东西。
<!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>
的return "some return value";作品,但是当我尝试返回温度,其空。我已经尝试了各种方法来使它起作用,但是我似乎无法在$http.get()函数中设置temp值
return "some return value";
$http.get()
这可能是简单的事情(或者我这是一个愚蠢的错误/误导方法)。任何建议将不胜感激
使用延迟:
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; }