Javascript angularjs过滤器的功能
我发现这个过滤器sumByKey非常有效,可以根据任何给定的键计算摘要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
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}}
^__ __^
这些答案中有哪一个幸运吗?:)