我正在尝试在使用ng-repeat的表中获取每个列的总和。我按照我在网上找到的一个例子,但它为小计加载了0。
这是我在控制器中获得的过滤器:
.filter('sumByKey', function() {
return function(data, key) {
if (typeof(data) === 'undefined' || typeof(key) === 'undefined') {
return 0;
}
var sum = 0;
for (var i = data.length - 1; i >= 0; i--) {
sum += parseInt(data[i][key]);
}
return sum;
};
});
然后我的观点如下:
<table class="table table-bordered table-hover table-responsive">
<thead>
<tr>
<th>
Date Ordered
</th>
<th>
Retail
</th>
<th>
Airtime
</th>
<th>
Spiff
</th>
<th>
Retail
</th>
<th>
Cost
</th>
<th>
Profit
</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="sale in vm.sales">
<td>
{{ sale.dateOrdered }}
</td>
<td>
{{ sale.firstLoadRetail}}
</td>
<td>
{{ sale.instantProfitAirTime }}
</td>
<td>
{{ sale.instantProfitSpiff }}
</td>
<td>
{{ sale.netRetail }}
</td>
<td>
{{ sale.netCost }}
</td>
<td>
{{ sale.netProfit }}
</td>
</tr>
<tr>
<th>
Subtotal
</th>
<td >{{ sales | sumByKey : 'firstLoadRetail' }}</td>
<td>{{ sales | sumByKey : 'instantProfitAirTime' }}</td>
<td>{{ sales | sumByKey : 'instantProfitSpiff' }}</td>
<td>{{ sales | sumByKey : 'netRetail' }}</td>
<td>{{ sales | sumByKey : 'netCost' }}</td>
<td>{{ sales | sumByKey : 'netProfit' }}</td>
</tr>
</tbody>
</table>
我做错了什么?提前谢谢。
答案 0 :(得分:1)
您忘记了vm.
部分。
<td >{{ vm.sales | sumByKey : 'firstLoadRetail' }}</td>
<td>{{ vm.sales | sumByKey : 'instantProfitAirTime' }}</td>
<td>{{ vm.sales | sumByKey : 'instantProfitSpiff' }}</td>
<td>{{ vm.sales | sumByKey : 'netRetail' }}</td>
<td>{{ vm.sales | sumByKey : 'netCost' }}</td>
<td>{{ vm.sales | sumByKey : 'netProfit' }}</td>