ng-repeatは、現在、オブジェクト内で反復処理する方法(Pythonで可能な方法)を使用できません。 NG-繰り返しsource codeをチェックアウトし、マッチした正規表現式があることに注意してください。
(key, value) in collection
- 彼らは、キー配列にプッシュし、値リストに割り当て、そう、あなたはおそらく、複雑なNGリピートを持つことができません最初の答えのような
- ネストされたNG-repeatが提案:悲しいことに...
はすでにたここに答えソリューションの2種類が基本的にあります。
- 2番目の回答のように1 ng-repeatに合わせてデータオブジェクトを再構築します。
私は、コントローラ内での並べ替えのロジックをコントローラの内部に保ち、HTMLドキュメントでそれを処理しないように、ソリューション2が優れていると思います。これにより、より複雑なソート(つまり、価格、金額、widgetNameまたは他のロジックに基づく)も可能になります。
もう1つの方法 - 2番目の解決策は、データセットの可能なメソッドを繰り返します(hasOwnPropertyはそこでは使用されていません)。
私はangular.forEachを使用するために、溶液はかなり単純ですが、複雑なソート・ロジックを可能にすることを示すために(finishingmoveのPlunkerに基づいて)この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#の背景、それは確かにオプションです – dovid