javascript - 设置默认数据绑定(bind)选项的值

标签 javascript jquery knockout.js

假设我们有以下数据绑定(bind)

<select data-bind="options: availableCountries,
        optionsText: 'countryName',
        value: selectedCountry,
        optionsCaption: 'Choose...'">
</select>

我想设置optionsCaption的默认值。

(当用户选择“choose..”时selectedCountry的值)

https://jsfiddle.net/3z2zzy0b/2/

最佳答案

不能为 optionsCaption 选择分配任意选项值(无论如何,开箱即用)。需要考虑的几个选项,其中一些比其他选项更迂回:

  1. 只需在您的国家/地区数组中添加另一个选项,例如:

    self.availableCountries = ko.observableArray([
            'Choose...',
            'United States',
            'Mexico',
            'Canada'
    ]);
    

    然后在 selectedCountry == 'Choose...' 时检查一些逻辑。

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

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

    并绑定(bind)为:

    <select data-bind="options: availableCountries,
            value: selectedCountry,
            optionsText: text,
            optionsValue: value">
    </select>
    
  3. 如果您不想在数组中使用非国家/地区元素(您可能也不想),您可以使用 optionsAfterRender 来解决它:

    <select data-bind="options: availableCountries,
            value: selectedCountry,
            optionsCaption: 'Choose...',
            optionsAfterRender: function(item, value) {
                    item.value = value || 'MY_DEFAULT';
            }">
    </select>
    

    此特定示例会将任何空白值设置为“MY_DEFAULT”。您还可以检查 item 中的文本 == 'Choose...'。

关于javascript - 设置默认数据绑定(bind)选项的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30459922/

相关文章:

javascript - Knockout.js bool 选择列表选项

javascript - Knockout.js - 单击所选项目时如何取消选中可观察的可用项目

javascript - 当我单击链接时如何使用 javascript 在 css 中更改图像中的选定颜色

javascript - 在vue js2.0中设置选择列表的路由器链接

jQuery 查找 img 标签并从中获取 SRC

javascript - 如何正确设置 Accordion 的高度以使文本适合

javascript - 从匿名包装器返回一个函数?

javascript - 使用 Knockout.JS 从 JSON 数据生成下载链接

javascript - Protractor 创建一个表页对象来处理具有不同选择器的表?

javascript - Node.JS https 请求返回 JSON