Knockoutjs清除组合框中的选定值

clp*_*lpx 3 javascript mvvm knockout.js

我有这个简单的knockout.js应用程序:

视图:

<select data-bind="options: allDocumentTypes , optionsCaption: 'Choose ...', optionsValue: 'id', optionsText: 'name', selectedOptions: selectedDocument"></select>
<span data-bind="click: cl">CLEAR VALUE!</span>
Run Code Online (Sandbox Code Playgroud)

而这个简单的ViewModel:

function documentType(id, name){
    this.id = id;
    this.name = name;
}

var viewModel = {
    allDocumentTypes: ko.observableArray([]),
    selectedDocument: ko.observable(''),
    cl: function(){
       viewModel.selectedDocument('');
    }
};

/* load data */
viewModel.allDocumentTypes.push(new documentType(1,'Test 1'));
viewModel.allDocumentTypes.push(new documentType(2,'Test 2'));
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)

我希望,在我点击span"CLEAR VALUE!"之后,在select中将选择选项"选择...",但它没有发生.viewModel中的值设置为""(空字符串),这是正确的,但用户仍然在select中看到旧值.

有没有办法做到这一点?

谢谢你的帮助:)

Jup*_*pin 10

您必须将绑定类型更改为"值"而不是"selectedOptions".下一步是在cl函数中设置viewModel.selectedDocument:

viewModel.selectedDocument(null);
Run Code Online (Sandbox Code Playgroud)