2014-04-02 4 views
5

Ello in einem ausgewählten Bindung,vorzuwählen mehr Werte, die selectedOptions mit Knockout mit optgroup

ich litteraly alle Optionen ausprobiert habe ein (mehrere) selectbox mit optgropus zu machen, und die Bindung der Optionen/selectedOptions mit Knockout.

Es scheint ein Problem mit der Bindung von selectedOptions zu geben. Meine Daten scheinen echt zu sein, aber sie zeigen einfach nicht die vorausgewählten Optionen. http://jsfiddle.net/aCS7D/251/ Es arbeitet mit einer einzelnen ausgewählten Option

<select data-bind="selectedOptions: selectedOptions" multiple="multiple"> 
<option>Please choose an option</option> 
<optgroup data-bind="repeat: groups" data-repeat-bind="attr: {label: $item().label}"> 
    <option data-bind="repeat: $item().children" data-repeat-bind="text: $item().label, option: $item()"></option> 
</optgroup> 

, aber mit mehreren selectedoptions, wird die Auswahlbox sie nicht richtig machen:

Ich habe ein Beispiel, in JSFiddle gemacht.

Wenn jemand eine Lösung für dieses Problem hat, wärst du mein Held!

Antwort

2

Sie können sie schieben, nachdem Sie Bindungen wie this gelten:

this.selectedOptions = ko.observableArray([]); 

//The single selected option 
this.selectedOption = ko.observable(selected1);  

var vm = new ViewModel() 
ko.applyBindings(vm); 
var selected1 = vm.groups()[1].children()[1]; 
var selected2 = vm.groups()[1].children()[0]; 
vm.selectedOptions.push(selected1); 
vm.selectedOptions.push(selected2); 
+1

Vielen Dank für Ihre Arbeitslösung! Ich kann aufgrund der gewählten Architektur kein Javascript nach dem Bindeelement ausführen. Aber ich werde versuchen, die afterRender Bindung zu verwenden, um die ausgewählten Optionen einzufügen. Wenn ich es zur Arbeit bekomme, werde ich die aktualisierte Lösung veröffentlichen. – Linksonder