AngularJs ngrepeat 总金额计算不正确



我正在尝试使每行总计,以增加前行的值,更多正在添加几次。 :: 我已经使用并且仍然重复运行几次。

例。

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;
  })

如果您不喜欢修改数据,那么我建议您在您的范围内使用一个函数,该函数返回一条添加了小计的新数据。

最新更新