Основано на следующем table Мне нужно получить общее количество всех промежуточных итогов.AngularJS: Суммирование вложенных объектов из нескольких объектов
Я попытался использовать тот же фильтр sumByKey, но я не работаю. Плюс, сумма всех промежуточных итогов должна основываться на результатах фильтра, это означает, что если у нас есть два результата (две категории), сумма промежуточных итогов должна основываться на этих объектах. Есть идеи?
HTML
<table border="1">
<thead>
<tr>
<th>#</th>
<th>Category</th>
<th>Products with quantities</th>
<th>Subtotal of quantities</th>
</tr>
</thead>
<tbody align="center">
<tr data-ng-repeat="category in categories | filter:search">
<td>{{$index+1}}</td>
<td>{{category.name}}</td>
<td>{{category.products}}</td>
<td>{{category.products | sumByKey:'quantity'}}</td>
</tr>
</tbody>
<thead align="right">
<tr>
<td colspan="3"><strong>Total</strong></td>
<td></td>
</tr>
</thead>
</table>
angularjs
var app = angular.module("app", []);
app.controller("controllerApp", function($scope, $http){
$http.get("categories.json").success(function(data) {
$scope.categories = data;
});
});
app.filter('sumByKey', function() {
return function (data, key) {
if (typeof (data) === 'undefined' || typeof (key) === 'undefined') {
return 0;
}
var sum = 0;
for (var i = data.length - 1; i >= 0; i--) {
sum += parseInt(data[i][key]);
}
return sum;
}
});
Когда фильтр категорий 'Всего' должны быть основаны на отфильтрованных объектов. Попробуйте использовать фильтр, чтобы увидеть общее количество. Есть идеи? Кстати спасибо за ваш ответ. – wilson