KnockoutJs - 计算数据库评级
Posted
技术标签:
【中文标题】KnockoutJs - 计算数据库评级【英文标题】:KnockoutJs - Calculate Database Ratings 【发布时间】:2015-04-28 04:10:11 【问题描述】:先看看这个:
http://pastebin.com/823NMiWc
这是 Knckoutjs + Jquery Raty 插件
假设这些是数据库中的列:
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 做到这一点,但 knockoutjs 对我来说是另一回事。
【问题讨论】:
【参考方案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>
【讨论】:
以上是关于KnockoutJs - 计算数据库评级的主要内容,如果未能解决你的问题,请参考以下文章
KnockoutJs observable array 通过计算 observable 和节流
KnockoutJS 3.X API 第三章 计算监控属性 参考手册
KnockoutJS 3.X API 第三章 计算监控属性 可赋值的计算监控属性