我正在尝试使每行总计,以增加前行的值,更多正在添加几次。 :: 我已经使用并且仍然重复运行几次。
例。
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>
只有这样做,价值才不正确。求和几次。谁能帮我?
你不能保证你的ng-repeat运行的频率,以及$scope.dVlTotalAnterior会得到多少次数据结构中的值添加到其中。
问题是您依赖于应该是只读操作("表示"操作)来修改作用域($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;
})
如果您不喜欢修改数据,那么我建议您在您的范围内使用一个函数,该函数返回一条添加了小计的新数据。