如何从 angularjs 工厂内的 $http.get() 返回数据 [英] How do I return data from a $http.get() inside a factory in angularjs

查看:24
本文介绍了如何从 angularjs 工厂内的 $http.get() 返回数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在这方面遇到了很多麻烦,我似乎在 SO 或 Google 上找不到任何可以帮助我发现我做错了什么的东西

<html data-ng-app="testApp"><头><title></title><身体><div data-ng-controller="myController">{{测试}}<br/>{{test2}}<br/>{{test3}}<ul><li data-ng-repeat="member in members">{{member.firstname}}</li>

<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 = 函数(){var temp = {};$http.get('hello.php').success(function(data){警报(数据);温度 = 数据;});返回一些返回值";}返回对象});函数 myController($scope, memberFactory){$scope.test="testString";$scope.test2= memberFactory.data;$scope.test3= memberFactory.getResponse();}</html>

return "some return value"; 有效,但是当我尝试返回 temp 时,它的值为 null.我尝试了各种方法来让它工作,但我似乎无法在 $http.get() 函数中设置临时值

这可能很简单(或者是我的愚蠢错误/被误导的方法).任何建议将不胜感激

解决方案

使用延迟:

obj.getResponse = function(){var temp = {};var defer = $q.defer();$http.get('hello.php').success(function(data){警报(数据);温度 = 数据;defer.resolve(数据);});返回 defer.promise;}

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

解决方案

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;
}

这篇关于如何从 angularjs 工厂内的 $http.get() 返回数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆