2016-05-18 28 views
0

我正在使用AngularJS,並且我已經加入了子文檔('orderfood'來自下面的JSON)並獲得了其數量的總和,我的JSON數據在orderfood下,我有confirm屬性。我只想過濾confirm屬性中具有值placed的數據。我plunker demoAngularJS - 具有'true'屬性的過濾器數據

結果我得到

3 quantities of V 4 Vanilla should be prepared 
3 quantities of Power cut should be prepared 

預期結果

2 quantities of V 4 Vanilla should be prepared 
3 quantities of Power cut should be prepared 

JSON

[{ 
"_id": "56e3bff0e9932ca6425e6f65", 
"orderfood": [ 
    { 
    "qty": "2", 
    "confirm": "placed", 
    "name": "V 4 Vanilla" 
    } 
], 
"name": "Rohit", 
"created": "2016-03-12T07:06:24.424Z" 
}, 
{ 
"_id": "56e3bd5bc3791b973c048804", 
"user": null, 
"__v": 10, 
"orderfood": [ 
    { 
    "qty": "1", 
    "confirm": "cancelled", 
    "name": "V 4 Vanilla" 
    }, 
    { 
    "qty": "3", 
    "confirm": "placed", 
    "name": "Power cut" 
    } 
], 
"name": "Rohit", 
"created": "2016-03-12T06:55:23.244Z" 
}]; 

控制器

$scope.getOrderFoods = function() { 
var orderfood = []; 

$scope.reduce= function(data){ 
    return data.reduce(function(previousValue, 
    currentValue, currentIndex, array) { 
    return previousValue + parseInt(currentValue.qty); 
}, 0); 
} 

angular.forEach($scope.orders, function(order) { 
    angular.forEach(order.orderfood, function(orderfoo) { 
    if (orderfood.indexOf(orderfoo) == -1) { 
     orderfood.push(orderfoo); 
    } 
    }) 
}); 
return orderfood; 
} 

HTML

<div ng-repeat="(key,data) in getOrderFoods() | groupBy:'name'"> 
    <p><span>{{reduce(data)}}</span> quantities of <span>{{key}}</span> should be prepared </p> 
</div> 

plunker demo

回答

1

只需在添加條件作爲過濾器的ng-repeat

<div ng-repeat="(key,data) in getOrderFoods() | filter: {confirm: 'placed'} | groupBy:'name'"> 

Plnkr