2013-08-21 9 views
11

Mam pole wyboru, które zapełniam przy użyciu nokautu. Po dokonaniu przez użytkownika niektórych wyborów w formularzu chciałbym zresetować to pole wyboru z powrotem do jego domyślnej wartości ustawionej w optionsCaption. Jak byś to zrobił? Próbowałem ustawić go na pusty ciąg, ale pozostawia go z wartością, którą wybrał użytkownik.Knockout.js przywraca wartość zaznaczenia z powrotem do wartości domyślnej

Oto mój kod:

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

Oto JS:

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

Co ja wtedy spróbować zrobić w innej sekcji brzmi:

self.component(""); 

Jednak pojawia się to do nie działają.

EDIT: Tutaj jest ryba http://jsfiddle.net/BASY4/

+0

Samo-składnik (""); "działa dobrze dla mnie: http://jsfiddle.net/8sku5/. Czy możesz utworzyć jsfiddle, który powiela twój problem? – nemesv

+0

Dodano teraz skrzypce –

Odpowiedz

22

Zastosowanie

self.component(null);

zamiast

self.component("");

roboczajsfiddle.

Inne wartości są dozwolone tylko wtedy, gdy znajdują się na liście źródłowej (tutaj self.components), w przeciwnym razie powiązanie wartości zostanie natychmiast zresetowane.

9

W zależności od wersji knockoutwy, zmienisz odpowiedź na to pytanie.

Jeśli używasz wersji 2.2.1 podobnie jak używa jsfiddle, musisz użyć;

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

Jeśli było zmienić tę wersję do najnowszej wersji 2.3.0 wtedy rzeczywiście można używać;

self.component(null); 
// or 
self.component(undefined); 
// OR 
self.component(''); 
Powiązane problemy