我有,我用在表上的平均数据的列过滤器:角过滤器返回不寻常的结果
app.filter('avgByKey', function() {
return function (data, key) {
if (typeof (data) === 'undefined' || typeof (key) === 'undefined') {
return 0;
}
var total = 0
for (var i = 0; i < data.length; i++) {
total += data[i][key];
}
var avg = total/data.length;
avg = Math.round(avg);
return parseInt(avg);
}
})
我用它像这样在我的HTML:
{{y.yearDetails|avgByKey:'" + $scope.columns[i].vchAssociatedDetailColumn + "'}}
过滤器按预期工作,直到我更改其中一个单元格中的数据。如果我在其中一个单元格中更改数字,它会返回一个数字,如“14578993057614092”作为平均值。我有一个几乎相同的过滤器,我在同一张桌子上使用以获得列的总和:
app.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 += parseFloat(data[i][key]);
sum += Math.round((data[i][key]) * 100)/100;
}
if (sum < 1) {
return parseFloat(sum.toPrecision(2));
}
else {
return sum;
}
};
});
即使我在其中一个单元格中更改数字,它也可以很好地工作。如果在使用平均过滤器更改单元格中的某个数字后,我刷新页面,则过滤器将显示“正确”的答案,但我必须刷新页面以获取它。任何人都可以告诉我为什么我的平均过滤器正在展示这种行为,以及我如何修复它?
这里是一个Plunker示出发生的情况:Example
你可以提供一些HTML代码或JsFiddle来更好地理解场景吗? –
我已经添加了一个Plunker来演示这个行为。 –