Я пытаюсь вычислить общую сумму в вложенном ng-повторе. В консоли я получаю ошибку и суммарную сумму неправильно. Ссылка на код: Plunker. Мой шаблон и JSВычисление суммы нескольких вложенных циклов в угловом
<div ng-controller="MyController" class="container">
<div ng-repeat="key in goods">
<h3>{{key.name}}</h3>
<div ng-repeat="good in key.group">
<h4>{{good.goodName}}</h4>
<ul>
<li>Count: <input ng-model="good.items" value="{{good.items}}" type="text"></li>
<li>Times: <input ng-model="good.times" value="{{good.times}}" type="text"></li>
<li>Sum: {{sum(good)}}</li>
</ul>
</div>
</div>
<div class="total">
<h2>Total sum: {{total()}}</h2>
</div>
</div>
Мои ЯШ:
var app = angular.module('myApp', []);
app.controller('MyController', ['$scope', function($scope){
$scope.allSum = 0;
$scope.sum = function(good) {
$scope.allSum += good.items * good.times;
return good.items * good.times;
};
$scope.total = function() {
return $scope.allSum;
};
$scope.goods = [
{
'name': 'name 1',
'group': [
{
'goodName': 'good 1',
'items': '4',
'times': '2',
'sum': '8',
'id': '1'
},
{
'goodName': 'good 2',
'items': '2',
'times': '2',
'sum': '4',
'id': '2'
}
]
},
{
'name': 'name 2',
'group': [
{
'goodName': 'good 3',
'items': '1',
'times': '10',
'sum': '10',
'id': '3'
},
{
'goodName': 'good 4',
'items': '3',
'times': '1',
'sum': '3',
'id': '4'
}
]
}
];
}]);
В консоли я есть ошибка: Ошибка: [$ rootScope: infdig] и неправильная сумма.
Я не думаю, что [$ rootScope: infdig] исходит из этого кода. Что касается неправильной суммы, вероятно, потому, что вы вычисляете строки вместо ints. Попробуйте $ scope.allSum + = parseInt (good.items) * parseInt (good.times); – Brian
Брайан, мне это не помогло. Сумма ошибочна. Я думаю, проблема с дубликатами. Как я могу это исправить? – vova84
Вам не хватает вашего закрывающего div на вашем контроллере div. Это просто опечатка? – Brian