これは、答えをグーグルで検索しようとした後の最初の投稿です。これが以前にどこかで回答されていた場合、私を適切な場所に誘導するのを手伝っていただければ、それは素晴らしいことです.
2 つのフィールド間で双方向バインディングを行う方法を見つけようとしています。
フォームに重量計算を行う 2 つのフィールドがあります。フィールド 1 に重量をポンドで入力すると、Knockout は重量をキログラムで計算してフィールド 2 に入力します。私はこれに問題はありません。これが私のjsfiddleです http://jsfiddle.net/ubiquitous_tom/tVh3g/
var weight = 180;
self.weight = ko.observable(weight.toFixed(2));
self.weightKG = ko.computed(function(){
var kg_weight = parseFloat(self.weight())/2.2;
return !isNaN(kg_weight) ? kg_weight.toFixed(2) : undefined;
});
今私が抱えている問題は、体重をキログラム単位でフィールド 2 に入れようとしているときです。ポンド単位の重量をフィールド #1 に計算する必要がありますが、実行しません。両方のフィールドで計算された「読み取り」と「書き込み」を使用しようとするすべてのコードで無限ループエラーが発生するため、それを機能させる方法がわかりません。
誰かが私を助けることができれば、それは素晴らしいことです. これは非常に単純なことだと確信していますが、私は Knockout にまったく慣れていないため、正しく機能させる方法がよくわかりません。ここに私が取り組んでいるもののjsfiddleがありますhttp://jsfiddle.net/ubiquitous_tom/VmZLZ/
var weight = 180;
self.weight = ko.observable(weight.toFixed(2));
self.weightKG = ko.computed({
read: function() {
return parseFloat(self.weight().toFixed(2));
},
write: function(newValue) {
var kg_weight = parseFloat(newValue)/2.2;
return !isNaN(kg_weight) ? kg_weight.toFixed(2) : undefined;
}
});