Tôi muốn lặp qua một mảng mà tôi xác định trong Javascript của tôi và hiển thị danh sách các nút radio. Mã của tôi mà không hiện đang làm việc, và nó là như sau (cũng trên jsfiddle):Làm cách nào để hiển thị một mảng dưới dạng danh sách các nút radio?
<div data-bind="foreach: options" >
<div>
<input type="radio" name="optionsGroup" data-bind="checked: selected" />
<span data-bind="text: label"></span>
</div>
</div>
var optionsList = [
{"value": "a","label": "apple"},
{"value": "b","label": "banana"},
{"value": "c","label": "carrot"}
];
function viewModel() {
var self = this;
self.options = optionsList;
self.selected = ko.observable("a");
self.selected.subscribe(function(newValue) {
alert("new value is " + newValue);
});
}
ko.applyBindings(new viewModel());
Nếu mảng của tôi là một phần của html sau đó nó hoạt động tốt, xem này (hoặc jsfiddle):
<div>
<input type="radio" name="optionsGroup" value="a" data-bind="checked: selected" />Apple
</div>
<div>
<input type="radio" name="optionsGroup" value="b" data-bind="checked: selected" />Banana
</div>
<div>
<input type="radio" name="optionsGroup" value="c" data-bind="checked: selected" />Carrot
</div>
<div data-bind="text: selected">
</div>
function viewModel() {
var self = this;
self.selected = ko.observable("a");
self.selected.subscribe(function(newValue) {
alert("new value is " + newValue);
});
}
ko.applyBindings(new viewModel());
tôi để làm việc này bằng cách tạo ra các tất cả các html trong javascript của tôi và có điều này sử dụng làm việc hộp kiểm tra, nhưng đang bối rối tạo ra một nhóm các radiobutton sử dụng iterato foreach r.
Có ai có ví dụ như người đầu tiên làm việc của tôi không?
Chắc chắn bạn có thể đưa ra một tiêu đề mang tính thông tin hơn. –
Đáng chú ý là bạn không cần 'var self = this' trong chế độ xem của bạnModel. Xóa dòng đó và thay đổi tất cả 'self' thành 'this'. Phạm vi của tiền phạt mà không có. – ruffin