我正在尝试将JSON数据导入angularJS应用程序。我将应用程序分为控制器和导入服务,但两者均位于不同的文件中。我还使用了bower,grunt和yeoman(这是由于工作,我不太习惯这些,也许还有一个问题。)

奇怪的行为是:

我想使用$ http.get()检索JSON数据并解决它-全部在服务中,这样我就可以将数据对象从那里分发给主控制器,而不必在那里解决。
奇怪的是,我没有得到任何数据,它为空或不可读。然后,我发出了$ http.get()方法给出的承诺,并在控制器中解决了它。那不是我想要的,但是现在可以了。。。但是为什么呢?

我猜这是一个小小的错误,但是我和我的团队成员都找不到。奇怪的是,在没有咕gr咕咕man咕and咕bow咕doing咕doing咕doing咕doing咕app咕doing咕doing咕worked咕doing地doing了little些小小的测试应用程序后,它worked行了。

我会很感激每一个提示或想法...
亚娜

这是我的非工作版本代码,首先是带控制器的主模块:

/** Main module of the application. */
(function () {
  'use strict;'
  angular.module('angularRegelwerkApp', [])
    .controller('RegelwerkCtrl', function ($scope, CategoryFactory) {

      $scope.categories = CategoryFactory.getCategories();
      $scope.subcategories = CategoryFactory.getSubCategories();

    }
  );
})();


服务部分:

(function () {
  'use strict';
  var app = angular.module('angularRegelwerkApp')
    .service('CategoryFactory',
    function ($http) {

      var categories = [];
      var subcategories = [];

      $http.get("../mockdata/categories.json").then(function (response) {
        categories = response.data;
      })
      $http.get('../mockdata/subcategories.json').then(function (response) {
        subcategories = response.data;
      })
      return {
        getCategories: function(){
          return categories;
        },
        getSubCategories: function(){
          return subcategories;
        }
      }
    }
  );
})();


这是我来自WORKING版本的代码,首先是带控制器的主模块:

/** Main module of the application. */
(function() {
  'use strict;'
  angular.module('angularRegelwerkApp', [])
    .controller('RegelwerkCtrl', function ($scope, CategoryFactory) {

      $scope.categories = [];
      $scope.subcategories = [];

      CategoryFactory.getCategories().then(function(response) {
        $scope.categories = response.data;
      });
      CategoryFactory.getSubCategories().then(function(response) {
        $scope.subcategories = response.data;
      });
    }
  );
}
)();


服务部分:

(function () {
  'use strict';
  var app = angular.module('angularRegelwerkApp')
    .service('CategoryFactory',
    function ($http, $q) {

      var categoryURL = "../mockdata/categories.json";
      var subcategoryURL = '../mockdata/subcategories.json';

      function getSubCategories() {
        return $http.get(subcategoryURL);
      }
      function getCategories() {
        return $http.get(categoryURL);
      }
      return {
        getCategories: getCategories,
        getSubCategories: getSubCategories
      }
    }
  );
})();

最佳答案

这破坏了您的引用,因此请循环遍历服务器中的数据,并将其放入所需的变量中:

  $http.get("../mockdata/categories.json").then(function (response) {
    for(var x = 0; x < response.data.length; x++){
        categories.push(response.data[x]);
    }
  });

关于javascript - Angular JS:使用$ http.get()导入JSON数据-在 Controller 中工作,不在服务中-为什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26968959/

10-09 05:58