计算ng重复值的总和Angularjs

问题描述:

我是Angularjs的新手。我正在使用ng-repeat显示项目列表。如何计算它的总和?有什么简单的方法来计算它在html中使用表达式?计算ng重复值的总和Angularjs

name numberofyears amount interest 
xxx  2   4000 4% 
yyy  3   3000 10% 
zzz  5   6000 6% 

Total  10  13000 16% 

前三行是从ng repeat.I只是想要计算总和如上所示。在此先感谢

这与Calculating sum of repeated elements in AngularJS ng-repeat这个问题非常相似。但不完全。我试图计算使用表达式,因为我有很多行

+0

可能重复(http://stackoverflow.com/questions/22731145/calculation-sum-of-repeated-elements-in-angularjs-ng-repeat) – Dalorzo 2014-09-03 13:50:29

+0

[其他帖子关于值的总和](http://stackoverflow.com/q/23842979/1959948) – Dalorzo 2014-09-03 13:51:11

+1

我看到了。是否有可能在HTML本身而不是去控制器计算。我有大约9列需要很长时间@Dalorzo – 2014-09-03 13:54:26

正如评论提到 - 你会在你的控制器中总结并显示ng-repeat后的总和值。

https://docs.angularjs.org/api/ng/directive/ngRepeat

的ngRepeat指令从集合实例每个项目一次的模板。

因此,ng-repeat用于渲染,并不是业务逻辑的地方。

+1

感谢您的回复。我有大约9栏和来自Db的大约50个数据。每一列我都必须调用函数给控制器呃? – 2014-09-03 14:07:07

+0

是的,你循环每个项目,并总结出你想要的值。例如在你的控制器中'$ scope.total = mySum;'然后你在你的ng-repeat下面增加一行来显示总数。有很好的图书馆,如lodash,可以帮助数据总结非常简单,例如'$ scope.mySum = _.reduce(myArray,function(sum,myRecord){return _ + myRecord.amount; });'http://lodash.com/docs#reduce – pherris 2014-09-03 14:14:45

+0

我不喜欢解决方案,有很多数据,这是昂贵的,想象一下旧的智能手机。但是ng-repeat并不是更好。也许你应该在获得数据时总结服务器端。 – amdev 2016-07-13 14:48:32

做数学题的控制器,那么你可以添加<tr ng-if="$last"> </tr>ng-repeat并显示最终结果

控制器前 - 简单的一周

function sum (object) { 
    var data = object; 
    var tmpSum 

    for (var i in object){ 
     tmpSum =+ object[i].value; 
    } 

    $scope.sum = tmpSum 
}; 

视图前

<tr ng-if="$last">{{sum}} </tr>

它有可能做到这一点,但我认为这种逻辑最适合您的控制器。总之,这是实现的一个可能的方式,你问什么使用NG-INIT:在AngularJS重复计算元素的总和NG-重复]的

<table ng-init="items.total = {}"> 
    <tr> 
     <td>name</td> 
     <td>numberofyears</td> 
     <td>amount</td> 
     <td>intrest</td> 
    </tr> 
    <tr ng-repeat="item in items"> 
     <td>{{item.name}}</td> 
     <td ng-init="items.total.numberofyears = items.total.numberofyears + item.numberofyears">{{item.numberofyears}}</td> 
     <td ng-init="items.total.amount = items.total.amount + item.amount">{{item.amount}}</td> 
     <td ng-init="items.total.interest = items.total.interest + item.interest">{{item.interest}}%</td> 
    </tr> 
    <tr> 
     <td>Total</td> 
     <td>{{items.total.numberofyears}}</td> 
     <td>{{items.total.amount}}</td> 
     <td>{{items.total.interest}}%</td> 
    </tr> 
</table> 
+0

很好的答案,对我来说就像一个魅力! – 2015-10-01 11:36:23

+0

@wawy我试过这个,它显示items.total为空数组。它不会将数据存储到其中。能否请你帮忙。我也没有得到任何错误 – codelearner 2016-03-21 08:52:55