angularjs自定义和滤波器不起作用

时间:2017-11-16 04:25:55

标签: angularjs angularjs-filter

我试图在我的桌子上进行总和操作,如

Item   Price
abc    10
xyz    20
Ites=>2   Price=>30

为此我写了简单的过滤器

.filter('SumOfAmt', function () {
    return function (data, key) {
        if (angular.isUndefined(data) || angular.isUndefined(key))
            return 0;
        var sum = 0;
        angular.forEach(data, function (value) {
            sum = sum + parseInt(value[key]);

Html代码

  <form name="form1" ng-submit="SaveDb(form1.$valid)" novalidate>

   <b>cost</b><input type="number"  ng-model="cost" required />
</form>

当用户以表格

显示的形式输入时,这是我的表格
    <table class="table table-bordered">
 <tr>
                        <td>Name</td>
                        <td>Price</td>
                    </tr>
                    <tr ng-repeat="Emp in EmployeeList">
 <td>{{Emp.EmpName}}</td>
                        <td>{{Emp.Cost | currency}}</td>
                    </tr>
               This is {{EmployeeList|SumOfAmt:'Cost'}}
            </table>

1 个答案:

答案 0 :(得分:1)

出了什么问题?

使用您的自定义过滤器,您可以获得正确的金额,您只需要返回总和:

.filter('SumOfAmt', function () {
    return function (data, key) {
        if (angular.isUndefined(data) || angular.isUndefined(key))
            return 0;
        var sum = 0;
        angular.forEach(data, function (value) {
            sum = sum + parseInt(value[key]);
        });
        return sum;
    };
});

但另一种选择是:

.filter('SumOfAmt', function () {
    return function (data, key) {
        if (angular.isUndefined(data) || angular.isUndefined(key))
            return 0;
        return data.map(function(a){return parseInt(a[key])}).reduce((a, b) => a + b, 0);
    };
});