2013-04-18 35 views
6

tôi cảm thấy thực sự ngu ngốc nhưng không thể làm cho nó hoạt :)Knockout.js ràng buộc nhóm đài phát thanh không hoạt động

http://jsfiddle.net/btkmR/

tôi đã Fiddle đơn giản này chỉ để chứng minh rằng tôi không thiếu một cái gì đó trong dự án lớn của tôi.

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); 

tôi mong đợi để xem Cherry chọn khi khởi động ..

+2

Ngoài câu trả lời của Jeremy, fiddle của bạn không phải là tham chiếu Knockout và định nghĩa viewmodel của bạn là bất hợp pháp. Khi sử dụng ký hiệu chữ của đối tượng, bạn sử dụng dấu phẩy, chứ không phải dấu chấm phẩy. – Tyrsius

Trả lời

16

Từ tài liệu Knockout của (http://knockoutjs.com/documentation/checked-binding.html):

Đối radio b uttons, KO sẽ đặt phần tử được kiểm tra nếu và chỉ nếu giá trị tham số bằng thuộc tính giá trị của nút nút radio.

Ví dụ: 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

Aha! Cảm ơn. Tôi đã nghĩ đó là boolean. Bây giờ nó có ý nghĩa – katit

11

Đối với những người, như tôi, đang phải vật lộn để có được nó làm việc với tên nhóm phát thanh tự động bị ràng buộc và đánh giá cao, chú ý đến thứ tự của các ràng buộc trong data-bind.

Tiếp theo sẽ KHÔNG làm việc, như valuename đang bị ràng buộc sauchecked:

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

đúng trật tự là:

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

wowee ... có một chút tốt đẹp gotcha, cảm ơn. – Andrew

Các vấn đề liên quan