我有,我用在表上的平均數據的列過濾器:角過濾器返回不尋常的結果
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來演示這個行爲。 –