2013-08-21 10 views
11

Ho una casella di selezione che sto popolando utilizzando knockout. Una volta che l'utente ha effettuato alcune selezioni nel modulo, desidero ripristinare la casella di selezione sul valore predefinito impostato su optionsCaption. Come faresti a fare questo? Ho provato a impostarlo su una stringa vuota, tuttavia questo lascia il valore che l'utente ha selezionato.Knockout.js reimposta il valore di una selezione indietro al suo valore predefinito

Ecco il mio codice:

<select data-bind="options: components, optionsValue: 'Component', optionsText: 'Component', optionsCaption: 'Choose Component', value: component"></select> 

Ecco l'JS:

self.components = ko.observableArray(["Component":"1234", "Component":"5678"]); 
self.component = ko.observable(); 

Quello che poi cerco di fare in un'altra sezione è:

self.component(""); 

Tuttavia questo sembra non ha alcun effetto

EDIT: Ecco un violino http://jsfiddle.net/BASY4/

+0

Il 'self.component (" ");' funziona bene per me: http://jsfiddle.net/8sku5/. Puoi per favore creare il tuo jsfiddle che riproduce il tuo problema? – nemesv

+0

Aggiunto violino ora –

risposta

22

Usa

self.component(null);

invece di

self.component("");

lavorojsfiddle.

Altri valori sono consentiti solo se si trovano nell'elenco di origine (qui self.components) altrimenti il ​​valore di binding viene reimpostato immediatamente.

9

A seconda della versione di knockoutjs che usi, cambierà la risposta a questa domanda.

Se si utilizza la versione 2.2.1 come si usa jsfiddle, sarà necessario utilizzare;

self.component(null); 
// or 
self.component(undefined); 

Se si dovesse cambiare questa versione alla versione più recente 2.3.0 allora si può effettivamente utilizzare;

self.component(null); 
// or 
self.component(undefined); 
// OR 
self.component(''); 
Problemi correlati