AngularJs ngrepeat未正确计算总金额

时间:2015-04-25 01:54:12

标签: angularjs angularjs-ng-repeat

我试图在每条线上增加一条线,增加前线的值,更多的是多次添加。 ::我已经使用过并且仍然重复几次运行。

实施例

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>

只有这样做,价值才是正确的。总和好几次。任何人都可以帮助我吗?

1 个答案:

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

如果您不想修改数据,那么我建议您在示波器中使用一个函数来返回添加了小计的新数据。