2013-04-18 7 views
6

動作しない結合:)Knockout.jsは、私は本当に愚かな感じが、それを動作させることができないラジオグループが

http://jsfiddle.net/btkmR/

私はちょうど私は何かが欠けていないよということを証明するために、この簡単なフィドルを作りました私の大きなプロジェクト。

HTML:

<div> 
    Preferred flavor 
    <div><input type="radio" name="flavorGroup" data-bind="checked: cherryOn" /> Cherry</div> 
    <div><input type="radio" name="flavorGroup" data-bind="checked: almondOn" /> Almond</div> 
    <div><input type="radio" name="flavorGroup" data-bind="checked: mgOn" /> Monosodium Glutamate</div> 
</div> 

JS:私は起動時に選択したCherryを見ることを期待

var viewModel = { 
    cherryOn: ko.observable(true); 
    almondOn: ko.observable(false); 
    mgOn: ko.observable(false); 
}; 

ko.applyBindings(viewModel); 

...ノックアウトのドキュメントから

+2

、あなたのフィドルではありませんKnockoutを参照しており、あなたのviewmodelの定義は不正です。オブジェクトのリテラル表記を使用する場合は、セミコロンではなくカンマを使用します。 – Tyrsius

答えて

16

http://knockoutjs.com/documentation/checked-binding.html):

のためにラジオb uttonsの場合、パラメータ値がラジオボタンノードのvalue属性と等しい場合、KOはチェック対象の要素を に設定します。

例:、私のように、それは動的にバインドラジオ・グループ名での作業と値を取得するために苦労している、data-bindでバインディングの順序に注意を払う人のためにhttp://jsfiddle.net/btkmR/2/

<div> 
    Preferred flavor 
    <div><input type="radio" name="flavorGroup" value="cherry" data-bind="checked: flavor" /> Cherry</div> 
    <div><input type="radio" name="flavorGroup" value="almond" data-bind="checked: flavor" /> Almond</div> 
    <div><input type="radio" name="flavorGroup" value="Monosodium" data-bind="checked: flavor" /> Monosodium Glutamate</div> 
</div> 

var viewModel = { 
    flavor: ko.observable("cherry") 
}; 

ko.applyBindings(viewModel); 
+0

ああ!ありがとう。私はそれがブーリアンだと思っていた。今それは理にかなっています – katit

11

valuenameとして、動作しません後

がバインドされているchecked後:

<input 
    type="radio" 
    data-bind=" 
     checked: $parent.correctAnswerId, 
     attr: {name: 'correctAnswerFor' + $parent.id, value: id} 
    " 
/> 

正しい順序は次のとおりです。ジェレミーの答えに加えて

 attr: {name: 'correctAnswerFor' + $parent.id, value: id}, 
     checked: $parent.correctAnswerId 
+0

wowee ...ありがとう、ちょっとしたおかげで、ありがとう。 – Andrew

関連する問題