2014-04-02 17 views
5

Ello,Preselezione più valori utilizzando le selectedOptions Knockout vincolante in un select con optgroup

Ho litteraly provato tutte le opzioni per fare una selectbox (multipla) con optgropus, e vincolante le opzioni/selectedOptions con eliminazione diretta.

Sembra esserci un problema con il binding OPTION selezionato. I miei dati sembrano essere legittimi, ma semplicemente non mostreranno le opzioni preselezionate.

Ho fatto un esempio in 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> 

Con una sola opzione selezionata funziona, ma con più selectedoptions, il selectbox non li rende in modo corretto.

Se qualcuno ha una soluzione a questo problema, saresti il ​​mio eroe!

risposta

2

È possibile spingere dopo l'applicazione di attacchi come 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

Grazie per la vostra soluzione di lavoro! Non sono in grado di eseguire javascript dopo l'elemento di rilegatura a causa dell'architettura scelta. Ma proverò ad usare il binding afterRender per inserire le opzioni selezionate. Se riesco a farlo funzionare, pubblicherò la soluzione aggiornata. – Linksonder