Я хотел бы пропустить массив, который я определяю в своем Javascript, и отображать список переключателей. Мой код, который не работает в настоящее время, и это выглядит следующим образом (в том числе на jsfiddle):Как отобразить массив как список переключателей?
<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());
Если мой массив является частью HTML, то он работает отлично, увидеть это (или 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());
я получил эту работу, генерируя все HTML в моем JavaScript и иметь это работает с помощью флажков, но я озадачен генерируя группу радиокнопок с помощью Еогеаспа iterato р.
Неужели кто-нибудь получил пример, как мой первый, чтобы работать?
Конечно вы можете найти более информативный титул. –
Стоит отметить, что вам не нужно 'var self = this' в вашем представленииModel. Удалите эту строку и измените все 'self' на 'this'. Сфера без штрафа. – ruffin