2014-04-02 22 views
5

Ello,wstępnie wybrać wiele wartości wykorzystujące selectedOptions nokaut w sposób wiążący wybierz z optgroup

Mam litteraly próbowałem wszystkie opcje do tworzenia (wiele) selectbox z optgropus i wiązania options/selectedOptions z nokautem.

Wygląda na problem związany z powiązaniem selectedOptions. Moje dane wydają się być zgodne z prawem, ale po prostu nie będą wyświetlać wstępnie wybranych opcji.

Zrobiłem przykład w JSFiddle: http://jsfiddle.net/aCS7D/251/

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

Z jednego wybranego wariantu to działa, ale z wieloma selectedoptions The selectbox nie czyni je poprawnie.

Jeśli ktoś ma rozwiązanie tego problemu, byłbyś moim bohaterem!

Odpowiedz

2

Można przekazać je po zastosowaniu wiązań jak this:

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

Dziękujemy za roztworu roboczego! Nie mogę wykonać żadnego javascriptu po elemencie wiążącym ze względu na wybraną architekturę. Ale spróbuję użyć powiązania afterRender do wstawienia wybranych opcji. Jeśli sprawię, że zadziała, opublikuję zaktualizowane rozwiązanie. – Linksonder