当前位置: 首页 > 面试题库 >

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

郭志泽
2023-03-14
问题内容

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

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


问题答案:

使用延迟:

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


 类似资料:
  • 问题内容: 在我的控制器中,我调用返回承诺的服务 在我的服务中,我通过直接将url传递给图像本身来获取图像: 所有调用都成功,并且response.data似乎保存在以下图像中: 虽然我不确定它是否确实可以,因为我无法显示它。我已经尝试过(在index.html内部) 有想法吗?是否可以从$ http.get返回实际图像并将其响应转换回图像(jpeg等) 谢谢! 问题答案: 返回的图像采用二进制编

  • 问题内容: 我希望仅使用硬编码JSON文件在本地进行开发。我的JSON文件如下(放入JSON验证程序时有效): 当JSON在工厂内部进行硬编码时,我已经使控制器,工厂和html正常工作。但是,现在我已经用$ http.get代码替换了JSON,它不起作用了。我已经看过$ http和$ resource的许多不同示例,但不确定去哪里。我正在寻找最简单的解决方案。我只是想为ng-repeat和类似指令

  • 问题内容: 我第一次尝试AngularJS。我正在使用工厂从http-get请求中获取JSON数据,但是在完成ajax请求之前,该对象返回为空。 厂: 控制器: 这就是我想出的。当控制器设置$ scope.photos时,该值为空,就好像它在填充ajax响应之前返回photos数组。 问题答案: 您应该修改代码以返回承诺并使用控制器中的值,请参见伪修改后的代码 和控制器-

  • 问题内容: 我是AngularJS的新手,因此遇到了这个问题。 我可以在所有注入了控制器的工厂中重新注入我的工厂单例对象吗? 例如: 在MedicalCenterController中,当应用程序启动时,我得到了带有医疗中心的单例对象: 但是稍后,我尝试在AccountProfileController中编辑医疗中心字段(名称,地址等)。 我期望的是具有更新字段的对象。如何返回我的单身人士的新实例

  • 我在我的程序中使用Hibernate注释,但它出错了。它没有返回我打开的会话工厂。我使用了netbean IDE,当我调试我的程序时,它想打开一个会话,下一步,它会转到,而不做任何其他事情。 这是我的文件夹。 在此输入图像描述 这是我的hibernate util 是我的类得到了会话工厂,但是得到了错误 然后在下一步之后也去上这门课 在此输入图像描述

  • 问题内容: 在我遵循的方法: 我可以从HTML调用它,例如: 如您所见,如果我得到回报 这是实用程序,因此我想将其定义为 没有例外 当我尝试这样称呼它时: 没发生什么事。 **我已添加到控制器。 如何从HTML调用工厂方法? (*如果不清楚,欢迎您更改/编辑我的问题) 谢谢, 问题答案: 好吧,您实际上不应该这样做…但是您 可以 做的是将服务对象放在$ scope的一个属性中,然后从那里调用它。