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」で再計算されるように見えますが、配列内の各インデックスの計算されたオブザーバブルは、配列の最後のメンバー。
明確にするために、「neededXp」を更新すると、すべてのメンバー「need」は、それぞれのインデックスではなく、マンタレイ値から「xp」を使用して再計算されます。
おそらく本当に明白なことですが、誰かが私に指示してくれることを願っています。
編集:コードを読み直した後、なぜそれが起こっているのかはわかると思いますが、修正方法がわかりません。意味があるのであれば、配列内の「xp」値を維持する方法がわかりません。
EDIT2 :http: //jsfiddle.net/sTnY7/使いやすさのために縮小されたサイズの配列を持つjsfiddle。魚のボタンを押してテーブルにデータを入力し、問題の最も簡単なデモンストレーションのために「目標レベル」を6に変更します。ここで問題が発生します。すべての「#Required」は、配列の最後のメンバーからXP値を取得し、再計算します。目標レベルが6の場合、102.2と表示されます。たとえば、「エビ」は511になります。
これが理にかなっていることを願っています。