knockout.jsで真偽値を入力させる場合はチェックボックスを使うのが最も簡単ですが、「はい/いいえ」みたいに明示的に「いいえ」を指定させたい場合があります。このような場合はラジオボタンを使って以下の様にすることになります。
<label><input type="radio" name="question" value="1" data-bind="checked: question" />はい</label>
<label><input type="radio" name="question" value="0" data-bind="checked: question" />いいえ</label>
value属性にビューモデルに設定される値を指定するわけですが、この値は文字列なので、ビューモデルに設定される値も文字列になります。普通にPOSTしてサーバに送信する場合はサーバが真偽値として解釈してくれる文字列を指定すればいいのですが、JSON形式で送信しようとした時に困ります。真偽値を期待しているところに文字列が送られてしまうのでエラーにされるかもしれません。
こんな時に使えるのがcheckedValue
パラメータです。選択された時の値を指定することができるので、true
とfalse
を指定してあげればビューモデルに真偽値が設定されるようになります。
<label><input type="radio" name="question" data-bind="checked: question, checkedValue: true" />はい</label>
<label><input type="radio" name="question" data-bind="checked: question, checkedValue: false" />いいえ</label>
参考:
http://knockoutjs.com/documentation/checked-binding.html#checkedValue