我试图在每条线上增加一条线,增加前线的值,更多的是多次添加。 ::我已经使用过并且仍然重复几次运行。
实施例
code value sum
1 2.0 2.0
2 4.0 6.0
3 -2.0 4.0
$scope.calcularTotal = function (dVlLancamento) {
$scope.dVlTotalAnterior = $scope.dVlTotalAnterior + dVlLancamento;
return $scope.dVlTotalAnterior;
}
<tr ng-repeat="item in ::rowCollection">
<td>{{::calcularTotal(item.dVlLancamento) | currency}}</td>
</tr>
只有这样做,价值才是正确的。总和好几次。任何人都可以帮助我吗?
答案 0 :(得分:1)
您无法保证ng-repeat的运行频率,以及$ scope.dVlTotalAnterior将数据结构中的值添加到其中的次数。
问题是你依赖于什么应该是只读操作,&#34;演示&#34;操作,修改范围内的数据($ scope.dVlTotalAnterior)。这是不好的做法,也是你得到令人困惑的结果的原因。
尝试不同的方法,这里有一个plunkr:
http://plnkr.co/edit/GrkXKwuYcW0xXF4oBotb?p=preview
关键是你至少在控制器中进行数据操作(不在视图中):
$scope.rowCollection = [{
dVlLancamento: 10
}, {
dVlLancamento: 20
}, {
dVlLancamento: 35
}];
// Add subtotals to data
var sum = 0;
$scope.rowCollection.forEach(function(elem) {
sum += elem.dVlLancamento;
elem.subtotal = sum;
})
如果您不想修改数据,那么我建议您在示波器中使用一个函数来返回添加了小计的新数据。