Knockout.js reset значение a выбирается обратно по умолчанию

У меня есть поле выбора, которое я заполняю с помощью нокаута. После того, как пользователь сделал некоторые варианты в форме, я хотел бы reset, чтобы выбрать поле обратно к его значению по умолчанию, которое установлено в optionsCaption. Как бы вы это сделали? Я попытался установить его в пустую строку, но это оставляет его со значением, которое пользователь выбрал.

Вот мой код:

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

Вот js:

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

То, что я затем пытаюсь сделать в другом разделе, следующее:

self.component("");

Однако это не имеет никакого эффекта.

EDIT: вот скрипка http://jsfiddle.net/BASY4/

Ответ 1

Используйте

self.component(null);

вместо

self.component("");

Работа jsfiddle.

Другие значения разрешены только в том случае, если они находятся в списке источников (здесь self.components), иначе привязка значения немедленно сбрасывается.

Ответ 2

В зависимости от того, какую версию нокаута вы используете, измените ответ на этот вопрос.

Если вы используете версию 2.2.1, которую использует jsfiddle, то вам нужно будет использовать;

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

Если вы должны были изменить эту версию до последней версии 2.3.0, тогда вы действительно можете использовать;

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