Ben masaya veri sütununu ortalamasını için kullandıkları bir filtre vardır:Açısal Filtre Olağandışı Sonuçları
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);
}
})
yüzden benim HTML gibi kullanın:
Filtre, hücrelerden birinde verileri değiştirene kadar beklendiği gibi çalışır. Hücrelerden birinde bir sayı değiştirirsem, ortalama olarak "14578993057614092" gibi bir sayı döndürür. I sütun toplamını elde etmek için aynı tabloda kullanmak, hemen hemen aynı filtre vardır:
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;
}
};
});
Hücrelerden birinde bir sayı değiştirdiğimde bile mükemmel çalışır. Hücre içindeki sayılardan birini ortalama filtreyle değiştirdikten sonra sayfayı yenilediğimde, filtre "doğru" cevabı gösterir, ancak bunu almak için sayfayı yenilemeliyim. Ortalama filtrenin neden bu davranışı sergilemediğini ve nasıl düzelteceğimi söyleyen var mı? Burada
ne gösteren bir Plunker olup: Example
Senaryoyu daha iyi anlamak için bazı HTML kodu veya JsFiddle sağlayabilir misiniz? –
Davranışı göstermek için bir Plunker ekledim. –