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

AngularJS:将数据从服务返回到控制器

漆雕伟志
2023-03-14
问题内容

我试图创建一个服务来获取json并将其传递给我homeCtrl我可以获取数据,但是当将其传递给我的homeCtrl时,它总是返回undefined。我卡住了。

我的服务:

var myService = angular.module("xo").factory("myService", ['$http', function($http){
  return{
    getResponders: (function(response){
      $http.get('myUrl').then(function(response){
         console.log("coming from servicejs", response.data);
      });
    })()
  };
  return myService;
  }
]);

我的家庭控制器:

var homeCtrl = angular.module("xo").controller("homeCtrl", ["$rootScope", "$scope", "$http", "myService",
function ($rootScope, $scope, $http, myService) {
 $scope.goData = function(){
     $scope.gotData = myService.getResponders;
 };
 console.log("my service is running", $scope.goData, myService);
}]);

问题答案:

您应该从getResponders函数返回promise ,当它被解析后,它应该response.data从该函数返回。

var myService = angular.module("xo").factory("myService", ['$http', function($http) {
    return {
        getResponders: function() {    
            return $http.get('myUrl')
            .then(function(response) {
                console.log("coming from servicejs", response.data);
                //return data when promise resolved
                //that would help you to continue promise chain.
                return response.data;
            });
        }
    };
}]);

同样在控制器内部,您应该调用factory函数,并.thengetRespondersservice函数解析该$http.get调用并将其分配data$scope.gotData

 $scope.goData = function(){
     myService.getResponders.then(function(data){
          $scope.gotData = data;
     });

 };


 类似资料:
  • 我一直在从控制器获取数据到角度服务,请检查我的代码,任何人都可以建议我怎么做 提前谢谢 pom.xml Java控制器 指数html 在我的浏览器里 响应标头 内容语言en Content Length 1067 Content Type文本/html;charset=utf-8日期2018年2月25日15:49:04 GMT服务器Apache Coyote/1.1 请求标头 Accept应用程序

  • 问题内容: 我在Angular中有一个服务,该服务使用我的API来获取用户信息并将其提供给控制器。设置如下: 在我的控制器中,我将其包含为: 这不会返回任何数据,而如果我将相同的服务功能放在控制器本身中,它将返回正确的值。我在这里想念什么?以前从未在Angular中使用过DI / Services,因此在某个地方可能是一个简单的错误。 我需要确保该服务在控制器加载 之前 返回数据。如何做到这一点

  • 问题内容: 我对AngularJS相当陌生,并且从模态对话框服务返回数据时遇到问题。基本上,我复制了Dan Wahlin的服务http://weblogs.asp.net/dwahlin/archive/2013/09/18/building-an- angularjs-modal- service.aspx, 并从我的控制器调用它。 然后我有我的部分,像这样: 这个模态被这样调用: 所以我的问题

  • 问题内容: 我已经阅读了几篇有关angularjs实体正确用法的文章:服务,工厂,控制器和指令。 我特别关心的是控制器和服务的比较。但是,没有一个帖子告诉我什么是控制器可以执行服务不能执行的操作,反之亦然。 可以列出它吗?或者仅仅是在angular的用法上规范? 问题答案: 控制器 通常用于绑定视图。控制器管理视图的生命周期,应将其视为视图控制器。将为视图的每个实例创建一个新的控制器,这意味着,如

  • 问题内容: 我有以下控制器: 我想将绑定的ng模型传递给以下服务,该模型位于我的视图中… 如何连接控制器的作用域以传递到服务中?谢谢! 问题答案: 如何在angularjs中将范围从控制器传递到服务? 您不能将$ scope注入服务,没有像Singleton $ scope这样的东西。 我想将绑定的ng模型传递给以下服务,该模型位于我的视图中,即ng-model =“ symbol_wanted”

  • 问题内容: 当使用AngularJS服务尝试在两个控制器之间传递数据时,我的第二个控制器在尝试从该服务访问数据时始终会收到未定义的信息。我猜这是因为第一个服务执行的是$ window.location.href,并且我认为这正在清除服务中的数据?我是否可以将URL更改为新位置,并将数据保留在第二个控制器的服务中?当我运行下面的代码时,第二个控制器中的警报始终未定义。 app.js(定义服务的位置)