2012-04-10 8 views
1

私は、次の例があります:YesまたはNo値がyesの場合は、チェックボックスをチェックする必要があり、保存されたリンクをクリックしたときに、プロパティがはい割り当てる必要があります:is_checkedプロパティは、2つの値を持つことができます http://jsfiddle.net/jLkxG/6/チェックボックス非ブール値?

をチェックボックスがオンになっているかどうかによって異なります。

ノックアウトでどうやったらいいですか?

+2

間違ったjsfiddleにリンクしていましたか?あなたの質問には関係していないようです。 –

+0

リンクを修正しました。 – firebird

答えて

2

計算のほかにもう一つの方法は、値の変更を傍受するために、「購読」を使用することです。たとえば、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);​ 
3

あなたの最初の問題は、あなたの結合にブラケットを逃したことである:

<input type="checkbox" value="Yes" data-bind="checked: is_checked() == 'Yes'"/> 

今すぐチェックボックスが正しくロード時にチェックされます。

大きな問題は、チェックボックスをクリックしても値が返されないことです。 boolにis_checked()を変更すると、正常に動作します。あなたが持っているのであれば:

self.is_checked = ko.observable(true); 

data-bind="checked: is_checked" 

をそれは動作します。チェックを外すと、is_checkedの値が更新されます。実際にはい/いいえではなくTrue/Falseのあなたがはい/いいえに真/偽のチェック状態を変換するためのいくつかのコードを記述する必要がありますしようとされていないことをあなたにとって重要である場合。あなたはこれについて行くことができるいくつかの方法があります。計算された観測可能性を試してみよう。ここを参照してください:http://jsfiddle.net/jLkxG/7/

関連する問題