我正在尝试将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/