Angular js绑定到集合中具有特定id的元素

时间:2013-12-26 07:56:47

标签: javascript angularjs angularjs-ng-repeat ng-bind

假设我有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>

是否有更好的方法在角度js中使用其他方式实现此目的。

我需要绑定到集合中特定Id的元素

我在这里描述的过程是重复的,消耗资源加上剂量看起来很好。

1 个答案:

答案 0 :(得分: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