У меня есть упрощенная корзина для покупок, подобная следующей, с контроллером для каждого элемента корзины:
<!DOCTYPE HTML>
<html ng-app="cart">
<div ng-controller="cartCtrl">
<table>
<tr><th>qty</th><th>prize</th><th>total</th></tr>
<tr ng-repeat="item in cartItems" ng-controller="cartItemCtrl">
<td>
<input ng-model="item.qty"/>
</td>
<td>
<input ng-model="item.prize" />
</td>
<td>
{{total}}
</td>
</tr>
</table>
total: {{cartTotal}}
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.1/angular.js"></script>
<script>
(function(){
var cart = angular.module('cart', []);
cart.controller('cartCtrl', ['$scope', function($scope){
$scope.cartItems = [{},{},{},{}];
}]);
cart.controller('cartItemCtrl', ['$scope', function($scope){
$scope.$watchCollection('item', function(){
$scope.total = $scope.item.qty * $scope.item.prize;
});
}]);
}());
</script>
</html>
Я не смог заставить это работать в JSFiddle: http://jsfiddle.net/XY3n8/1/
Теперь я хочу рассчитать общую сумму корзины, но я не хочу пересчитывать итоговые суммы товаров. Вместо этого я хочу повторно использовать уже рассчитанные итоги элементов. Как? (В моем случае расчет общего количества предметов немного сложнее.)