Knockout.js:选择元素中的清除选择

sel*_*dog 3 javascript ko.observablearray knockout-2.0 knockout.js

我需要从<select>元素中清除选择.我已经读过像Knockoutjs这样的帖子,在组合框中清除了选定的值并尝试了接受的答案,但这些解决方案似乎没有用(不知道Knockout 2中的某些内容是否因为答案被接受而发生了变化?) .

这是一个示例视图模型:

var ClearSelectionViewModel = function () {
    var self = this;

    self.station = ko.observable();

    self.selectedStation = ko.observable();
    self.selectedStation.subscribe(function (value) {
        self.station(value);
    });

    self.stations = ko.observableArray(['CLT', 'PHL', 'PHX', 'PIT']);

    self.clearSelectedStation = function () {
        self.selectedStation(null);
    };
};

ko.applyBindings(new ClearSelectionViewModel());?
Run Code Online (Sandbox Code Playgroud)

clearSelectedStation被调用时,绑定视图模型属性应该设置到null,这应该由绑定的UI反映<select>元素出现空白和扩大的选项没有透露强调项目的列表.但是,我注意到的是,如果您尝试将绑定值property(selectedStation)设置为不在options(stations)数组中的任何内容,则绑定似乎会被忽略.

这个小提琴说明了我在说什么:http://jsfiddle.net/sellmeadog/Su8Zq/1/

如果我不需要,我不想用"空白"值"污染"选项数组.我想知道如何让链接的帖子中的解决方案起作用.

RP *_*yer 8

一种选择是对optionsCaption"未选择"值使用附加绑定.必须将其设置为可以使用的东西,但您可以将其设置为" ".

<select data-bind="optionsCaption: ' ', options: stations, value: selectedStation"></select>
Run Code Online (Sandbox Code Playgroud)

示例:http://jsfiddle.net/rniemeyer/Su8Zq/3/