2013-12-26 4 views
-1

позволяет сказать, что у меня есть 2 коллекцииУгловые JS связывание с элемента с конкретным идентификатором внутри коллекции

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 

сделать это что теперь IAM делает это изменить продаж свойство locSales следующей структуры

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

так, что я могу затем привязать к конкретному идентификатору, как этот

<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 внутри коллекции

процесс я описал здесь повторяется и потребляет ресурсы плюс доцент хорошо выглядеть.

+0

Если он работает, не прикасайтесь к нему. Если он повторяется, абстрагируйте логику преобразования коллекции в общую функцию. – Stewie

ответ

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