Javascript angularjs过滤器的功能

Javascript angularjs过滤器的功能,javascript,angularjs,filter,Javascript,Angularjs,Filter,我发现这个过滤器sumByKey非常有效,可以根据任何给定的键计算摘要 demo.filter('sumByKey', function () { return function (data, key) { if (typeof (data) === 'undefined' || typeof (key) === 'undefined') { return 0; } var sum = 0; for (var i = data.l

我发现这个过滤器sumByKey非常有效,可以根据任何给定的键计算摘要

demo.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;
   };
})
如何将此筛选器设置为函数ie:

$scope.getTotal = function(key){
  // function of the filter here
}
原因是,即使我可以像这样使用过滤器:

{{filtered|sumByKey:'quantity'}}
我不能在这样的计算中使用它:

 {{filtered|sumByKey:'quantity' * price}}
{{getTotal(quantity) * price}}
我可以使用这样的函数:

 {{filtered|sumByKey:'quantity' * price}}
{{getTotal(quantity) * price}}

关于如何在计算中使用过滤器或使过滤器正常工作,您有什么想法吗?

您可以在过滤器中使用一个功能:

函数(值):谓词函数可用于编写任意筛选器。为数组的每个元素调用该函数。最后的结果是谓词为其返回true的那些元素的数组

例如:

函数取求和参数时:

$scope.total = 0;
$scope.getTotal = function(name) {
    return function(val) {
        total += val;
    }
}

实际上,你可以使用它,它更重要的是优先权问题。只需将筛选结果用括号括起来:-

{{(filtered|sumByKey:'quantity') * price}}
  ^__                        __^

这些答案中有哪一个幸运吗?:)