传回枚举字典时所选值不起作用

本文关键字:不起作用 枚举 字典 | 更新日期: 2023-09-27 18:37:18

我正在使用挖空数据绑定创建一个选项列表。基本上在我的服务器端我有一个枚举

public enum CarType
{
    Saloon = 1,
    Hatch = 2,
    Convertable = 3,
    SUV = 4
}

这基本上被创建到服务器端的字典中,并被发送回客户端。

因此,上面的枚举将作为具有键和值的对象返回到客户端。

我的视图模型是这样的:

this.carName= ko.observable();
this.carType = ko.observable();  

我的选项绑定如下:

<select class="form-control" data-bind="options: $root.carTypes, optionsText: 'value', optionsValue: 'key', value: carType"></select>

所以基本上当我按下编辑按钮时,这个视图将在第一轮正确渲染。但是,如果我取消编辑页面并重新打开它,那么它会选择选项列表中的第一个元素。

不确定我是否做错了什么,或者淘汰赛与字典的行为是否不同?

返回的汽车类型对象是字典元素数组

示例
[{key="1", value="Saloon"}, {key="2", value="Hatch"}  .......

传回枚举字典时所选值不起作用

我不确定我是否理解你的问题。是否希望避免选择第一项?如果是这样,请查看文档中的optionsCaption:http://knockoutjs.com/documentation/options-binding.html#parameters

选项标题

有时,您可能不希望通过以下方式选择任何特定选项 违约。但是单选下拉列表通常以一些开头 项目已选择,那么如何避免预先选择某些内容?通常的 解决方案是在选项列表前面加上一个特殊的虚拟选项 仅显示"选择一个项目"或"请选择一个选项"或 类似,并默认选择该选项。

这很容易做到:只需添加一个带有名称的附加参数 选项标题,其值是要显示的字符串。例如:

<select data-bind='options: myOptions, optionsCaption: "Select an item...", value: myChosenValue'></select>

KO将在项目列表前面加上显示文本的项目列表 "选择一个项目..."并且具有未定义的值。所以,如果我的选择值 保持值未定义(默认情况下可观察量这样做),然后 将选择虚拟选项。如果选项标题参数是 可观察,则初始项目的文本将更新为 可观察的值会发生变化。