我发现这个过滤器https://gist.github.com/Cacodaimon/7309268 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;
};
})
如何将此过滤器设为函数,即:
$scope.getTotal = function(key){
// function of the filter here
}
原因是即使我可以像这样使用过滤器:
{{filtered|sumByKey:'quantity'}}
我不能在这样的计算中使用它:
{{filtered|sumByKey:'quantity' * price}}
我可以使用这样的函数:
{{getTotal(quantity) * price}}
有关如何在计算中使用过滤器或使过滤器起作用的任何想法?
答案 0 :(得分:0)
您可以在过滤器中使用某个功能:
function(value):谓词函数可用于写入任意过滤器。为数组的每个元素调用该函数。最终结果是谓词返回true的那些元素的数组。
例如:
{{filtered|getTotal(quantity * price)}}
使用您的函数获取求和参数:
$scope.total = 0;
$scope.getTotal = function(name) {
return function(val) {
total += val;
}
}
答案 1 :(得分:0)