2013-04-18 128 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:

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

ko.applyBindings(viewModel); 

我希望看到Cherry上開始選擇..

+2

除了傑里米的答案,你的小提琴是不是引用Knockout,而你的viewmodel定義是非法的。當使用對象文字符號時,您使用逗號而不是分號。 – Tyrsius

回答

16

基因敲除的文檔(http://knockoutjs.com/documentation/checked-binding.html):

對於收音機b如果參數值等於單選按鈕節點的值屬性,則KO將設置要檢查的元素,並且只有 。

例子: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

對於那些誰像我一樣,都在努力把它與動態綁定的單選按鈕組名工作和值,注意在data-bind綁定的順序。

下面的不會起作用,因爲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

哇...有一個很好的小竅門,謝謝。 – Andrew