我正在开发一个简单的示例AngularJS应用程序,它从外部JSON数据文件中读取数据。我已经尝试了所有的东西,但我找不到为什么应用程序不能工作。如有任何意见,将不胜感激。
“filmCtrl”控制:
angular
.module('mediaApp')
.controller('filmCtrl', function(filmList) {
var vm = this;
vm.films = filmList.retrieveFilms();
});“filmList”服务:
angular
.module('mediaApp')
.service('filmList', function($http) {
var vm = this;
vm.retrieveFilms = function() {
return $http
.get('films.json')
.then(function(response) {
return response.films;
});
};
return vm;
});杰森:
{
"films":[
{
"title": "Reservoir Dogs",
"director": "Quentin Tarantino",
"year": "1992"
},
{
"title": "2001: A Space Odyssey",
"director": "Stanley Kubrick",
"year": "1967"
},
{
"title": "Memento",
"director": "Christopher Nolan",
"year": "2000"
},
{
"title": "Enter the Dragon",
"director": "Robert Clouse",
"year": "1973"
},
[etc]...
]
}所有这些文件都保存在同一个文件夹中,并包含在我的HTML文件中。JSON已经过验证。我哪里出错了?
发布于 2016-01-15 17:58:04
根据我的评论,您可以这样创建service -
mediaApp.service('filmList', ['$http',
function($http) {
var vm = this;
vm.retrieveFilms = function() {
return $http.get('data.json');
};
return vm;
}]);在controller中,您可以使用这个service,比如-
mediaApp.controller('filmCtrl', function(filmList) {
var vm = this;
filmList.retrieveFilms().then(function(response) {
vm.films =response.data.films;
});
});Plnkr - http://plnkr.co/edit/6RVlvdh8oG5WaiEHaPdM?p=preview
它将在FF中工作,但是对于某些浏览器,它会抛出CORS错误,所以在服务器上运行它更好。
发布于 2016-01-15 17:40:10
then(response)中,响应对象具有以下属性:data – {string|Object} --响应体通过转换函数进行转换。
响应的status – {number} - HTTP状态代码。
headers – {function([headerName])} -标头getter函数。
config – {Object} -用于生成请求的配置对象。
响应的statusText – {string} - HTTP状态文本。
所以这应该是
return $http
.get('films.json')
.then(function(response) {
return response.data.films;
});而不是
return $http
.get('films.json')
.then(function(response) {
return response.films;
});有关更多信息,请参见官方医生。
政策
一些错误信息可能是有用的。
https://stackoverflow.com/questions/34816559
复制相似问题