-1

У меня есть объект:AngularJS фильтр и резюме

$scope.basketList = [{id : A1, name : metal}, 
{id : A2, name : plastic}, 
{id : B1, name : fiber}]; 

$scope.itemList = [{ id : 1, basket_id : 'A1', ctg : 'fruit', stok : 3}, 
{ id : 2, basket_id : 'A2', ctg : 'fruit', stock : 2}, 
{ id : 4, basket_id : 'A1', ctg : 'fruit', stock : 4}, 
{ id : 5, basket_id : 'B1', ctg : 'fruit', stock : 1}, 
{ id : 6, basket_id : 'B1', ctg : 'fruit', stock : 2}, 
{ id : 7, basket_id : 'A1', ctg : 'fruit', stock : 4}, 
{ id : 8, basket_id : 'A2', ctg : 'fruit', stock : 2}]; 

В HTML:

<div class="stock"> 
<div ng-repeat="basket in $scope.basketList> 
    <div>Basket : {{basket.name}}</div> 
    <div ng-repeat="item in itemList | filter : {basket_id : basket.id}"></div> 
</div> 
</div> 

Как фильтровать и суммировать итоги. так, то выход будет выглядеть следующим образом:

  • Metal

    friut, акции = 11

  • Пластиковые

    фрукты, акции = 4

  • волокна

    фрукты, шток = 3

+1

Что вы пробовали? Во всяком случае, я думаю, что неплохо использовать фильтры здесь, вместо этого я бы лучше использовал директивы. – k102

+0

Я просто делаю простой веб-сайт с угловым. и я узнал пару недель угловатым. –

ответ

0

Для простого ответа вы можете создать функции для расчета общей стоимости акций и «ctg». Например

$scope.getTotal = function(basket) { 
    var totalStock = $scope.itemList.reduce(function(total, curr){ 
    if (curr.basket_id === basket.id) return total + curr.stock; 
    return total; 
    }, 0); 
    return totalStock; 
} 

$scope.getCtg = function(basket) { 
    for (var i = 0; i < $scope.itemList.length; i++) { 
    if (basket.id === $scope.itemList[i].basket_id) return $scope.itemList[i].ctg; 
    } 
    return 'not found'; 
} 

Вам нужно будет настроить шаблон:

<div class="stock"> 
<div ng-repeat="basket in basketList"> 
    <div>Basket : {{basket.name}}</div> 
    <span ng-bind="getCtg(basket)"></span>, 
    <span ng-bind="getTotal(basket)"></span> 
</div> 

Вот полный jsfiddle: http://jsfiddle.net/2c3pmhpa/4/

Конечно, в реальном приложении вы, вероятно, сделать более общий но это должно работать для вашего простого случая.

+0

thnk вы для своего решения sir .. Это просто иллюстрация, которая имеет ту же логику с моей проблемой :) –