Javascript 设置默认数据绑定选项的值

Javascript 设置默认数据绑定选项的值,javascript,jquery,knockout.js,Javascript,Jquery,Knockout.js,假设我们有以下数据绑定 <select data-bind="options: availableCountries, optionsText: 'countryName', value: selectedCountry, optionsCaption: 'Choose...'"> </select> 我想设置optionsCaption的默认值 用户选择时selectedCountry的值。。精选 如果要设置默认值,请使

假设我们有以下数据绑定

<select data-bind="options: availableCountries,
        optionsText: 'countryName',
        value: selectedCountry,
        optionsCaption: 'Choose...'">
</select>
我想设置optionsCaption的默认值

用户选择时selectedCountry的值。。精选


如果要设置默认值,请使用选项的值

<select data-bind="options: availableCountries,
    value: selectedCountry()">
</select>
现在美国将从选项中设置

<select data-bind="options: availableCountries,
    value: selectedCountry()">
</select>
更新的Fiddle:

无论如何,选项标题选择不能在开箱即用的情况下分配任意选项值。有两个选项要考虑,一些比其他的更迂回:

只需在您的国家/地区列表中添加另一个选项,例如:

self.availableCountries = ko.observableArray([
        'Choose...',
        'United States',
        'Mexico',
        'Canada'
]);
然后在选择Country==“Choose…”时检查一些逻辑

与1类似,将数组转换为对象数组:

self.availableCountries = ko.observableArray([
        { text: 'Choose...', value: 'MY_DEFAULT' },
        { text: 'United States' value: 'United States' },
        { text: 'Mexico', value: 'Mexico' },
        { text: 'Canada', value: 'Canada' }
]);
并绑定为:

如果您不希望数组中的非国家/地区元素,并且您可能不希望,则可以使用选项AfterRender:

此特定示例将任何空白值设置为“MY_DEFAULT”。您还可以检查项目的text==“Choose…”


你想问什么?你的问题是什么?我需要设置选择框的值,当没有选择任何内容时,向右,但是我希望仍然有一个nothing selected选项可用。如果您没有任何要选择的内容,只需删除Options Caption并为其提供空字符串。标记提示:如果在代码前面使用8个空格,它将是该列表项的代码块部分。这样,您就不需要使用反勾选格式。