-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

假设两者的数组顺序相同productslocSales.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 回答