一尘不染

我如何从angularjs工厂中的$ http.get()返回数据

angularjs

我对此有很多麻烦,在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值

这可能是简单的事情(或者我这是一个愚蠢的错误/误导方法)。任何建议将不胜感激


阅读 195

收藏
2020-07-04

共1个答案

一尘不染

使用延迟:

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;
}
2020-07-04