ng-repeat目前沒有一種可能的方式來對內部對象進行復雜的迭代(在python中可能的方式)。退房的NG-重複source code並注意匹配的正則表達式的表達式爲:
(key, value) in collection
- 和他們推入鍵陣列,並分配給值列表,所以你不可能有一個複雜的NG-重複可悲的是...
基本上有2種類型本來就已經在這裏找到答案的解決方案:
- 嵌套類的第一個答案NG重複建議。
- 重建您的數據對象,使其適合1 ng重複,就像建議的第二個答案一樣。
我認爲解決方案2更好,因爲我喜歡在控制器內保持排序&編碼邏輯,而不是在HTML文檔中處理它。這也將允許更復雜的排序(即基於價格,數量,widgetName或其他邏輯)。
另一件事 - 第二個解決方案將迭代數據集的可能方法(因爲hasOwnProperty沒有在那裏使用)。
我爲了使用angular.forEach,並表明所述溶液是相當簡單的,但是允許複雜的排序邏輯改進在此Plunker(基於finishingmove Plunker)溶液中。
$scope.buildData = function() {
var returnArr = [];
angular.forEach($scope.data, function(productData, widget) {
angular.forEach(productData, function(amount, price) {
returnArr.push({widgetName: widget, price:price, amount:amount});
});
});
//apply sorting logic here
return returnArr;
};
$scope.sortedData = $scope.buildData();
,然後在你的控制器:
<div ng-controller="MyCtrl">
<table>
<thead>
<tr>
<td>thing</td>
<td>price</td>
<td>amount</td>
</tr>
</thead>
<tbody>
<tr ng-repeat="item in sortedData">
<td>{{ item.widgetName }}</td>
<td>{{ item.price|currency }}</td>
<td>{{ item.amount }} </td>
</tr>
</tbody>
</table>
</div>
只是爲了搜索引擎,我將增加從C#的背景下,angularjs」 – dovid