問題
ページの現在の URL に基づいて、json データをフィルタリングし、その一部のみを Angular ページに表示しようとしています。
詳細に
100 個の JSON オブジェクトのリストがあり、それぞれは次のようになります。
{
"name": "Evangeline Perreault",
"age_1": 1,
"total_age": 1,
"photo_small": "img/400/001_400.jpg",
"photo_medium": "img/800/001_800.jpg",
"photo_large": "img/1200/001_1200.jpg",
"photo_extralarge": "img/1600/001_1600.jpg",
"video": 67443664,
"id": 1,
"quote": "test quote here and here",
"type": 1
},
「type」属性は、データのサブセットを除外するために使用したいものです。それを念頭に置いて、ここで type 属性を自分の URL に結び付けるように URL 構造をセットアップしようとしました。これが私のルートです:
angular.module('100_Ages', ['mydirectives', 'ngResponsiveImages']).
config(['$routeProvider', function($routeProvider) {
$routeProvider.
when('/100_Ages/nav/:personType', {templateUrl: 'partials/person-list.html', controller: NavListCtrl}).
otherwise({redirectTo: '/100_Ages'});
}]);
そこで、JSON の「type」フィールドへのルートを指定し、この 2 つを結び付けるコントローラーを作成してみました。
function NavListCtrl($scope, $routeParams, $http) {
$http.get('person.json').success(function(data) {
angular.forEach(data, function(person) {
if (person.type == $routeParams.personType)
$scope.person = person;
});
});
}
そして、ここに私の部分的なテンプレートがあります:
<div class="nav_outer"><img class="nav_img" ng-src="{{person.photo_small}}" ng-alt="{{person.name}}" /></div>
これにより、現在の URL タイプに一致するすべての画像が表示されることを期待していました。したがって、「/100_Ages/nav/3」にいる場合、タイプが「3」のオブジェクトからのすべての画像 (約 10 枚の写真) が表示されると予想しました。ただし、タイプが「3」の最後のオブジェクトしか表示されませんでした。
だから、私はそのng-repeat
ように試しました:
<div class="nav_outer" ng-repeat="person in persons"><img class="nav_img" ng-src="{{person.photo_small}}" ng-alt="{{person.name}}" /></div>
ループして一致するすべての画像を表示することを期待していましたが、何も表示されませんでした。
私の問題はangular.forEach
.
提案をありがとう。