Knockout.js 如何使用KO显示嵌套数组中的下拉值

Knockout.js 如何使用KO显示嵌套数组中的下拉值,knockout.js,Knockout.js,我有一个这样的数组-注意“选项”数组不包括[];这是服务器通过MVC返回的数据-最初我得到的数组与下面的注释代码类似: //var initialData = @Html.Raw(Json.Encode(Model.FieldList));): var initialData = [{ "DisplayName": "Service Status", "Options": { "123": "Active", "127": "Scrapped", "121": "Inactive" }, "V

我有一个这样的数组-注意“选项”数组不包括[];这是服务器通过MVC返回的数据-最初我得到的数组与下面的注释代码类似:

//var initialData = @Html.Raw(Json.Encode(Model.FieldList));):

var initialData = [{ "DisplayName": "Service Status",
"Options": { "123": "Active", "127": "Scrapped", "121": "Inactive" },
"Value": "123"
        }];
我想把选项中的值放到一个下拉列表中,标签为“活动”、“报废”、“非活动”,每个映射到数组选项中列出的相应数值

我想在下拉列表中预先选择对应于123的值“Active”。 我的下拉列表标签将是“服务状态”

这是我目前掌握的代码。但它只显示我的服务状态,其中有一个元素,Active。如何将其他2个元素添加到下拉列表中

如果你能在这方面帮助我,我将非常感激。 谢谢


var模型;
$(文档).ready(函数(){
var initialData=[{“DisplayName”:“服务状态”,
“选项”:{“123”:“活动”、“127”:“报废”、“121”:“非活动”},
“值”:“123”
}];
viewModel={fields:ko.observatarray(initialData)};
应用绑定(视图模型);
});

您可能希望将包含您的值的对象映射到可以使用选项绑定的数组中

比如:

var optionsFromServer = data[0].Options,
    options = [];

for (var prop in optionsFromServer) {
    if (optionsFromServer.hasOwnProperty(prop)) {
        options.push({ id: prop, text: optionsFromServer[prop] });   
    }
}
然后,您可以绑定此新选项数组,如:

<select data-bind="options: options, optionsValue: 'id', optionsText: 'text'"></select>


谢谢您的回复。但我对这方面还不熟悉。如果你能帮我更多的忙,我会非常感激的。如果我理解你的建议,我必须为选项中的每个项目定义标签,对吗?例如,在项目(“123”:“活动”),“id”=123和“text”=Active中,是否正确?这样我就可以在html中使用这些标签,并根据需要显示它们。我是新手,我不确定应该在哪里定义你在我的文件中发布的代码。你能帮我一点忙和/或指导我在哪里阅读/查找以获得更多关于解析嵌套数组的信息吗?另外,请注意,为了简单起见,我只列出了一个包含选项的项;数据中有更多的项(它是一个数组)不包含选项,并且有不同的字段显示。就是。说[0]不是一个选项,因为我必须遍历一个数组。数组中每个项目的选项是否不同?下面是一把小提琴,展示了数组的基本思想:是的,这非常有效。非常感谢你的帮助。我在这里有很多东西要学。
<select data-bind="options: options, optionsValue: 'id', optionsText: 'text'"></select>