学习 KnockoutJS 并碰壁。为游戏制作计算器。总结版本如下:
用户输入“neededXp”。每次更新“neededXp”时,数组都应该重新计算“need”。
self.neededXp = ko.observable(0);
function calcItem(name, image, xp, level) {
this.name = name;
this.level = level;
this.xp = xp;
this.need = ko.computed(function() {
var req = self.neededXp()/this.xp;
return req;
});
}
self.calcContent = ko.observableArray([
]);
self.populateFishing = function() {
self.calcContent.push(calcItem('Shrimp','#',1,10));
self.calcContent.push(calcItem('Sardine','#',5,20));
self.calcContent.push(calcItem('Shark','#',110,76));
self.calcContent.push(calcItem('Sea Turtle','#',38,79));
self.calcContent.push(calcItem('Manta Ray','#',46,81));
}
目前,它第一次完美计算,并且似乎在更新“neededXp”时,它会使用正确的“neededXp”重新计算所有值,但是数组中每个索引的计算 observable 从数组的最后一个成员。
澄清一下,当我更新“neededXp”时,所有成员“需要”都使用Manta Ray值中的“xp”重新计算,而不是它们各自的索引。
可能真的很明显,希望有人可以指导我。
编辑:重新阅读我的代码后,我想我可以明白为什么会这样,但我不知道如何解决。如果有意义的话,我不知道如何维护数组中的“xp”值。
EDIT2: http: //jsfiddle.net/sTnY7/ jsfiddle 为可用性减小了数组大小。点击鱼按钮来填充表格,然后将“目标级别”更改为 6 以最简单地演示问题。这就是问题发生的地方——所有“#Required”都从数组的最后一个成员中获取 XP 值并重新计算。如果目标级别为 6,则显示 102.2 - 例如,“虾”应为 511。
希望这是有道理的。