Vorrei scorrere un array che definisco nel mio Javascript e rendere un elenco di pulsanti di opzione. Il mio codice che non funziona attualmente, ed è la seguente (anche su jsfiddle):Come eseguire il rendering di un array come elenco di pulsanti di opzione?
<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());
Se il mio array è parte del codice HTML, allora funziona benissimo, vedere questo (o 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());
ho ottenuto questo al lavoro generando il tutto il codice HTML nei miei javascript e hanno questo utilizzando le caselle di controllo di lavoro, ma stumped generare un gruppo di radiobutton utilizzando l'iterato foreach r.
Qualcuno ha avuto un esempio come il mio primo a lavorare?
Sicuramente puoi trovare un titolo più informativo. –
Vale la pena notare che non hai bisogno di 'var self = this' nel tuo viewModel. Elimina quella linea e cambia tutto 'self's in' this'. Scope sta bene senza. – ruffin