次の例があります: http://jsfiddle.net/jLkxG/6/
is_checked プロパティには、Yes または No の 2 つの値を指定できます。値が yes の場合はチェックボックスをオンにする必要があり、保存されたリンクをクリックすると、チェックボックスがオンになっているかどうかに応じて、プロパティに yes または no が割り当てられる必要があります。
ノックアウトjsでこれをどのように行いますか?
次の例があります: http://jsfiddle.net/jLkxG/6/
is_checked プロパティには、Yes または No の 2 つの値を指定できます。値が yes の場合はチェックボックスをオンにする必要があり、保存されたリンクをクリックすると、チェックボックスがオンになっているかどうかに応じて、プロパティに yes または no が割り当てられる必要があります。
ノックアウトjsでこれをどのように行いますか?
最初の問題は、バインディングの角かっこを見逃したことです。
<input type="checkbox" value="Yes" data-bind="checked: is_checked() == 'Yes'"/>
これで、ロード時にチェックボックスが正しくチェックされます。
より大きな問題は、チェックボックスをクリックしても値が書き戻されないことです。is_checked()をboolに変更すると、正常に機能します。だからあなたが持っているなら:
self.is_checked = ko.observable(true);
と
data-bind="checked: is_checked"
それは動作します。チェックボックスをオフにすると、is_checkedの値が更新されます。True/FalseではなくYes/Noであることが本当に重要な場合は、true/falseチェック状態をYes/Noに変換するためのコードを作成する必要があります。これについては、いくつかの方法があります。計算されたオブザーバブルを試してみます。ここを参照してください:http://jsfiddle.net/jLkxG/7/
計算以外の別の方法は、「subscribe」を使用して値の変更をリッスンすることです。たとえば、is_checked にバインドし、その値を true または false にします。次に、そのオブザーバブルをサブスクライブし、必要に応じて別のプロパティを Yes/No に設定します。ここでフィドルを参照してください:http://jsfiddle.net/johnpapa/jLkxG/8/
HTML
<input type="checkbox" data-bind="checked: checkedvals.is_checked"/>
<label>Test</label><br/>
<pre data-bind="text:displayJS">
</pre>
JavaScript
var viewModel = (function() {
var self = this;
self.checkedvals = {
is_checked : ko.observable(true),
is_checked_val : ko.observable("Yes")
};
self.checkedvals.is_checked.subscribe(function(){
self.checkedvals.is_checked_val(self.checkedvals.is_checked() ? "Yes" : "No");
});
self.displayJS = ko.computed(function() {
return JSON.stringify(ko.toJS(checkedvals), null, 2);
});
})();
ko.applyBindings(viewModel);