我正在尝试从我的代码中删除一个硬编码数组,并将其转换为我可以随时替换的平面文件,因此我使用HTTP来执行此操作。
使用下面的代码,它不会以我可以在我的标记中迭代它的方式返回结构。此外,出于某种原因,当我看到Firebug并观看请求时,它似乎打了4次电话(!)。
var app = angular.module('MainEventApp', ['cloudinary']);
app.service('MainEventRepository', ['$http', function ($http) {
this.$http = $http;
this.getMainEvents = function () {
return this.$http.get('/main_events.json').then(function(response) {
return response;
});
}
}]);
app.controller("MainEventCtrl", ['$scope', 'MainEventRepository', function ($scope, MainEventRepository) {
$scope.main_events = MainEventRepository.getMainEvents();
}]);
main_events.json
[
{
"id": 1,
"roman_numeral": "I",
"name": "Hulk Hogan & Mr T vs Rowdy Roddy Piper & Paul Orndorff",
"venue": "Madison Square Garden",
"state": "New York",
"attendance": 19121
},
... and so on ...
]
我的标记:
ng-repeat='main_event in main_events'
答案 0 :(得分:1)
在你的控制器中,完成承诺:
MainEventRepository.getMainEvents().then(function(data) {
$scope.main_events = data;
});
此外,在您的服务中,从响应中返回data
对象:
return response.data;
答案 1 :(得分:1)
您的服务中的$http
电话会返回一个承诺,因此您需要在控制器中执行以下操作:
MainEventRepository.getMainEvents().then(function (data) {
console.log(data);
$scope.main_events = data;
});