AngularJS ng-repeat列的总和

时间:2015-10-15 18:25:51

标签: angularjs

我正在尝试在使用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>

我做错了什么?提前谢谢。

1 个答案:

答案 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>