2015-02-25 1 views
0

Взгляните на этот первый:KnockoutJs - Расчет базы данных Рейтинги

http://pastebin.com/823NMiWc

Это Knckoutjs + Jquery Raty Plugin

Предположим, эти столбцы из базы данных:

story_rev: ko.observable(), 
animation_rev: ko.obervable(), 
sound_rev: ko.observable(), 
characters_rev: ko.observable(), 
enjoyment_rev: ko.observeable(), 

Это в основном основанные на оценке события в базе данных, которые варьируются от 0 до 5 с шагом 0,5 (ввод номера)

Кто-нибудь знает, как сделать так, чтобы он вычислял среднее значение из 5 оценок? Я как-то знаю, как это сделать через jquery, но нокауты - это совсем другая история.

ответ

1

Для расчета среднего значения вы можете использовать computed observable.

function AppViewModel() { 
 
    var self = this; 
 
    
 
    self.story_rev = ko.observable(); 
 
    self.animation_rev = ko.observable(); 
 
    self.sound_rev = ko.observable(); 
 
    self.characters_rev = ko.observable(); 
 
    self.enjoyment_rev = ko.observable(); 
 
    
 
    self.averageRating = ko.computed(function() { 
 
     var ratings = [self.story_rev(), self.animation_rev(), self.sound_rev(), self.characters_rev(), self.enjoyment_rev()]; 
 
     
 
     return ratings.reduce(function(a, b) { 
 
      return a + parseInt(b, 10); 
 
     })/ratings.length; 
 
    }); 
 
} 
 

 
var model = new AppViewModel(); 
 

 
model.story_rev(1); 
 
model.animation_rev(2); 
 
model.sound_rev(3); 
 
model.characters_rev(4); 
 
model.enjoyment_rev(5); 
 

 
//Should output the average (in this case 3) 
 
console.log(model.averageRating());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>