【发布时间】:2020-04-14 06:59:38
【问题描述】:
我正在尝试获取 My ng-repeat 表中列的总和。我在本段下方分享了表格的图像。
表格代码如下。
<table>
<tr>
<th>Ref No</th><th>Model</th><th>IMEI</th><th>Color</th><th>Warranty</th><th>Branch</th><th>Party</th><th>Date of Sell</th><th>Amount</th>
</tr>
<tr ng-repeat="x in Approve"><td> {{ x.sno }} </td><td> {{ x.p_model }} </td><td> {{ x.imei }} </td><td> {{ x.color }} </td><td> {{ x.warrenty }} </td><td> {{ x.branch }} </td><td> {{ x.party }} </td><td> {{ x.dsell }} </td><td ng-init="Approve.total.amount = Approve.total.amount + x.rate"> {{ x.amount | number:2 }} </td></tr>
<tr><td></td><td></td><td></td><td></td><td></td><td></td><td></td><td style="color:red;">Grand Total</td><td>{{ grandtotal }}</td></tr>
</table>
我的控制器代码如下。
<script>
var app = angular.module('myApp', []);
app.controller('customersCtrl', function($scope, $http) {
$http.get("api/sold_out.php").then(function (response) {
$scope.Approve = response.data.message;
});
});
</script>
Jsone 从服务器获取:
{"message":[{"0":"2","sno":"2","1":"Huawei P9 Lite ","p_model":"Huawei P9 Lite ","2":"545454545454","imei":"545454545454","3":"White","color":"White","4":"CGC","warrenty":"CGC","5":"50","amount":"50","6":"1","sell":"1","7":"27\/02\/2017","dsell":"27\/02\/2017","8":"1","transfer":"1","9":"MANSOURA","branch":"MANSOURA","10":"Cloud International Co Will","party":"Cloud International Co Will"},{"0":"3","sno":"3","1":"Samsung Galaxy J7 6","p_model":"Samsung Galaxy J7 6","2":"456545454545545","imei":"456545454545545","3":"Gold","color":"Gold","4":"Gasham","warrenty":"Gasham","5":"100","amount":"100","6":"1","sell":"1","7":"27\/02\/2017","dsell":"27\/02\/2017","8":"1","transfer":"1","9":"MANSOURA","branch":"MANSOURA","10":"Cloud International Co Will","party":"Cloud International Co Will"}]}
我需要在总计区域中显示 Amount 列的总 sum 值。
【问题讨论】:
-
如何在控制器中创建一个函数,将列表中的这些值相加,并在 html 中引用该函数?
-
我知道这不是您要的,但是在您的视图中包含这种计算逻辑并不是最佳实践。我建议将此字段推送到模型中,或者在您的控制器中计算然后推送到模型中。它还允许您编写有关如何计算的单元测试。
-
告诉我步骤。
-
按照@seva 所说的,您还可以实现一个过滤器来显示您的总计,例如
<td style="color:red;">Grand Total</td><td>{{ Approve | sumColumn: 'amount' }}</td>。如果您对此感兴趣,我将用示例将其写为答案 -
你能用我的代码给我看一个完整的例子吗?我像你说的那样更新了代码。创建了一个过滤器,但它使整个东西消失了。
标签: angularjs