Knockout.js 在淘汰下拉列表中隐藏第一个选择选项

Knockout.js 在淘汰下拉列表中隐藏第一个选择选项,knockout.js,Knockout.js,我正在使用如下模板创建多个下拉列表: <script type="text/html" id="option-menu-template"> <select data-bind='event: { change: myFunction( data, event) }, options:Options, optionsText:"Option",optionsValue:"ID",value: selection'></select>

我正在使用如下模板创建多个下拉列表:

    <script type="text/html" id="option-menu-template">
        <select data-bind='event: { change: myFunction( data, event) }, options:Options, optionsText:"Option",optionsValue:"ID",value: selection'></select>
    </script>
    <div data-bind="template: { name: 'option-menu-template', foreach: menuWrapper}"></div>
使用此viewmodel

function OptionMenu(data) {
    self.myFunction = function (data, event){
        if(event.target.value && event.target.value.indexOf("|") >= 0) 
        {
            changedMenu(event.target.value);
        }
    }
    return {
        Options: ko.observableArray(data),
        selection: ko.observable()
    }
}
function KnockoutModel() {
    var self = this;
    self.menuWrapper = ko.observableArray([]);
}

var list = new KnockoutModel();
ko.applyBindings(list );
输入的数据始终采用以下格式:

[{"Option":"---Select a *whatever*---","ID":"0"},
{"Option":"1st Choice","ID":"1"},
{"Option":"2nd Choice","ID":"32"}]
etc.
我希望第一个选项“---选择一个任意的----”作为“占位符”,并且在实际的下拉列表中不可见。我可以用这个

 $('select option:nth-child(1)').attr('hidden', 'hidden');
成功地,但因为我创建了新的,所以每次我都要调用它,这有点麻烦。我想知道是否有一种更令人震惊的方法来做这件事?

见注2

options afterrender
回调允许您根据备份对象修改选项;该示例显示了如何禁用选项

最好是禁用第一个选项,而不是直接隐藏它,否则第一个值将被自动选择。如果在列表中保留禁用的,如果没有预先选择的值,仍然可以确定用户实际上没有选择任何内容(出于验证目的)

 $('select option:nth-child(1)').attr('hidden', 'hidden');