0
我有此代码,如何添加选项到淘汰赛js选项中的第一个选项?
<select class="form-control" required data-bind="options: legends, value: statusToChange">
我有一个传说阵列。我想在选项中添加“”(空格)。但我不想在数组中添加它。
我使用基因敲除js为这个应用程序,所以我有self.legends()作为传说数组。
我有此代码,如何添加选项到淘汰赛js选项中的第一个选项?
<select class="form-control" required data-bind="options: legends, value: statusToChange">
我有一个传说阵列。我想在选项中添加“”(空格)。但我不想在数组中添加它。
我使用基因敲除js为这个应用程序,所以我有self.legends()作为传说数组。
这听起来像你正在寻找的optionsCaption
binding:
optionsCaption
有时候,你可能不希望默认选择任何特定选项。但是单选下拉列表通常从选择的某个项目开始,因此如何避免预选某些内容?通常的解决方案是在选项列表前添加一个特殊的虚拟选项,该选项只读取“选择一个项目”或“请选择一个选项”或类似选项,并且默认选择该选项。
这个很简单:只需添加一个名称为
optionsCaption
的附加参数,其值是要显示的字符串。例如:<select data-bind='options: myOptions, optionsCaption: "Select an item...", value: myChosenValue'></select>
KO将前缀与一个显示文本的项目列表“中选择一个项目......”和值为undefined。因此,如果
myChosenValue
的值为undefined
(默认情况下为可观察值),则将选择虚拟选项。如果参数optionsCaption
是可观察值,则初始项目的文本将随着可观察值的更改而更新。
实施例:
var vm = {
legends: ko.observableArray([
"one",
"two",
"three",
"four"
]),
legend: ko.observable()
};
vm.legend.subscribe(function(newValue) {
console.log("Legend: " + newValue);
});
ko.applyBindings(vm, document.body);
<select data-bind="options: legends, optionsCaption: 'legends', value: legend"></select>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
它是未定义的。 – JMA
@JohnArellano:你想要什么呢?字面上''“''?你可以简单地创建一个计算器,将未定义的转换为其他值:'vm.legendComputed = ko.pureComputed(function(){var l = this.legend(); return l === undefined?“”:l ;};' –
...或者创建一个计算数组,用于'options',这个数组只是前面带''''的原始数组。 –