返回服务$ http.get响应控制器而不使用$ scope

时间:2017-12-19 20:51:02

标签: angularjs

我一直在寻找几个小时,但我无法找到解决方案。我试图从我的AngularJS应用程序中的单独json文件中检索数据。使用$ http我会得到我想要的数据。 但是,我想在多个地方从该文件中获取特定数据。在服务中,我想定义一些控制器可以调用以检索数据的函数(该服务使用$ http获取)。 现在的问题是,当我将所有数据直接返回给控制器,或者稍后尝试在服务中使用它时,分配的变量是未定义的。 我尝试使用 controller-as语法,所以我不想使用$ scope。但是,我发现的每个解决方案都建议使用$ scope。此代码现在记录PaymentData

服务代码:


f {$$state: {...}}

控制器代码:

theApp.service('SettingsService', function($http) {
  this.dataVar = $http.get('../settings.json')
    .then(function(response) {
      return response;
    });
});

1 个答案:

答案 0 :(得分:0)

更新: https://jsfiddle.net/md954y0a/

如何在启动模块中调用您的服务,然后通过加载相同实例的服务传递给子模块

HTML:

  <div ng-app='myApp' ng-controller="myctrl">
    {{parent}}
    <div ng-app='myApp1' ng-controller="myctrl1">
    {{myApp1data}}
    </div>  
  </div>

JS:

angular.module('myApp', ['myApp1']).controller('myctrl', ['$scope', 'API',  function($scope, API) {
 $scope.parent = API.getData();

}]).service('API', function($q) {
    var object = null;
  this.getData = function() {
    object = {
      obj1: "DATA1",
      obj2: "DATA2"
    };
    return object;
  }
});


angular.module('myApp1', []).controller('myctrl1', ['$scope', 'API',  function($scope, API) {
  $scope.myApp1data = API.getData().obj1

}]);