我有一个json文件,我从我数据库中的所有人那里获取信息。我实际上使用它来显示网页中的名字,姓氏,我想添加显示每个人的详细信息的可能性。AngularJS:从一个ID为json数组获取数据
要做到这一点我使用的人的ID是这样的:
.when('/people/:id', {templateUrl: 'partials/people-detail.html'})
它工作得很好,我对每个人,这是很好的生成的页面。但是现在我想要得到这个人的信息。
最简单的方法应该是为每个人都有一个json文件,但我并不特别喜欢这么多文件的想法。 所以我真正的想法是迭代通过people.json文件找到好的并使用它,但它不工作。
这里是我的控制器:
var PeopleController = angular.module ('PeopleController', []);
PeopleController.controller('PeopleDetailCtrl', ['$scope', '$routeParams', '$http',
function($scope, $routeParams, $http) {
$scope.search = function() {
var url = 'data/people.json';
$http.get(url).success(httpSuccess).error(function() {
alert('Unable to get back informations :(');
});
}
httpSuccess = function(response) {
$scope.persons = response;
}
function getById(arr, id) {
for (var d = 0, len = arr.length; d < len; d += 1) {
if (arr[d].id === id) {
return arr[d];
}
}
}
$scope.search();
$scope.person = getById($scope.persons,$routeParams.id);
}]);
好吧,也许我的解决方案是坏的,因为它不工作,但我没有找到另一种方式来做到这一点。
现在我都是你的:)
感谢您的阅读。
感谢您的帮助,它的工作原理!我不知道这是否是最好的解决方案(如果我不得不每次重复1000次,这不是很酷),但它仍然有效。 那么,我真的不明白then()方法的效用。唯一的区别是它等待承诺。即使您不确定success()是否会返回promise,在这种情况下,您将使用error()方法来管理此问题,对吧? – Ryuu
如果它有效,那么成功会回报一个承诺,是的。如果你想了解更多信息,你应该阅读承诺。这是一个有据可查的JavaScript原则。关于您通过ID获取的解决方案:更好的选择是将您的信息存储在数据库而不是json文件中,然后通过在服务器上公开API直接查询数据库。 –
我会搜索一下,谢谢。使用数据库和服务器是我的第一个想法,但应用程序也应该离线工作(移动应用程序与科尔多瓦),所以我选择本地库存一切,并增加了通过询问服务器来更新文件的可能性。 – Ryuu