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');