-1

2つのコレクションがあるとしましょう

var products = [{Name : "p1", Id : 1}, {Name : "p2", id : 2}];
var locSales = [
 {LocName : "Loc1", Sales : [{Id : 1, Value : 23}, {Id : 2, Value : 54}]}
 {LocName : "Loc2", Sales : [{Id : 1, Value : 78}, {Id : 2, Value : 90}]}
];

私はそれらをコントローラーのスコープにバインドします

$scope.products = products;
$scope.locSales = sales;

このデータから、次のような構造のテーブルを作成したい

Loc Name | P1 | P2
Loc1     | 23 | 54
Loc2     | 78 | 90

これを行うために、私が今行っていることは、locSales の Sales プロパティを次の構造に変更することです

var locSales = [
     {LocName : "Loc1", Sales : {"1" : 23, "2" : 54}}
     {LocName : "Loc2", Sales : {"1" : 78, "2" : 90}}
    ];

このように特定のIDにバインドできるように

<table>
 <tr >
  <td>Loc name</td>
  <td ng-repeat="p in products">{{p.Name}}</td>
 </tr>
 <tr ng-repeat="s in locSales">
  <td>{{s.LocName}}</td>
  <td ng-repeat="p in products">
   {{s.Sales[p.Id]}}
  </td>
 </tr>
<table>

angular jsで他の方法を使用してこれを達成するより良い方法はありますか。

コレクション内の特定の ID の要素にバインドする必要があります

ここで説明したプロセスは反復的であり、リソースを消費するだけでなく、見栄えもよくありません。

4

1 に答える 1

0

配列の順序が両方で同じであると仮定すると、次のproductsこと locSales.Salesができます。

<tr ng-repeat="s in locSales">
  <td>{{s.LocName}}</td>
  <td ng-repeat="sale in s.Sales">
    {{sale.Value}}
  </td>
</tr>

DEMO

于 2013-12-26T13:58:03.267 に答える