2014-09-12 84 views
2

我正在使用Angular JS,並且在使用ng-repeat指令和routeParams以及我的JSON數據中的嵌套數組時使用ng-repeat指令。Angular ng-repeat與routeParams和嵌套數組

我有此數據(work.json是文件名):

[ 
{ 
「workName」:」Sample」, 
"workLocation」:」Sample Location」, 
"workDescription"Sample Description", 
"workImages": ["1.png","2.png","3.png"] 
}, 
{ 
「workName」:」Sample」, 
"workLocation」:」Sample Location」, 
"workDescription"Sample Description", 
"workImages": ["4.png","5.png","6.png"] 
}, 
] 

我有這樣的控制器:

workControllers.controller('DetailController', ['$scope', '$http', '$routeParams', 
function ($scope, $http, $routeParams) { 
$http.get('data/work.json').success(function(data) { 
$scope.detail = data; 
$scope.whichItem = $routeParams.itemId; 
}); 
}]); 

然後這一觀點:

<div ng-model="detail"> 
<h1>{{detail[whichItem].workName}}</h1> 
<p>{{detail[whichItem].workDescription}}</p> 
</div> 

<div ng-repeat="item in detail[whichItem].workImages"> 
<img ng-src="{{item.id}}" /> 
</div> 

的第一個div中的項目正常工作。毫無疑問,ng-repeat的第二個div中的項目不會顯示出來。我現在在這裏有一個關於如何實現循環的猜測。

當使用routeParms我如何迭代我的數據中使用ng-repeat的嵌套數組? ng-重複我應該在這裏使用什麼?

+1

item.id解決了什麼問題?它不應該只是項目? – 2014-09-12 11:25:12

回答

0

Joao Leal是正確的,根據示例JSON數據,workImages是字符串數組。

<div ng-repeat="item in detail[whichItem].workImages"> 
    <img ng-src="{{item}}" /> 
</div> 

應該工作。

爲了簡化起見則可以設置$scope.detail像:

$http.get('data/work.json').success(function(data) { 
    $scope.detail = data[$routeParams.itemId]; 
}); 

所以可以省略在每一個細節數據鑑於結合[whichItem]

而你不應該爲div設置ng-model。它用於雙向綁定表單輸入。沒有它,它就會工作。

+0

非常好,謝謝。這些調整工作。我對視圖中的ng-repeat進行了一些細微的改動,不確定它是否是正確的語法,但它的工作原理如下:ng-repeat =「item in detail.workImages track by $ index」 – midcentral42 2014-09-12 16:32:51

+0

track by $ index,在數組中是唯一的 – midcentral42 2014-09-12 16:41:53