0

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

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

var initialData = [{ "DisplayName": "Service Status",
"Options": { "123": "Active", "127": "Scrapped", "121": "Inactive" },
"Value": "123"
        }];

我想将选项中的值放入带有标签“活动”、“报废”、“非活动”的下拉列表中,每个都映射到数组选项中列出的相应数值。

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

这是我到目前为止的代码。但它只显示我的服务状态下拉菜单,其中包含 1 个元素,活动。如何将其他 2 个元素添加到下拉列表中?

如果您能在这方面帮助我,我将不胜感激。谢谢!

<script type="text/javascript">
    var viewModel;
    $(document).ready(function() {
           var initialData = [{ "DisplayName": "Service Status",
                  "Options": { "123": "Active", "127": "Scrapped", "121": "Inactive" },
                  "Value": "123"
           }];
        viewModel = { fields: ko.observableArray(initialData) };
        ko.applyBindings(viewModel);
    });
</script>

<span data-bind="foreach: viewModel.fields">
<span data-bind="text:DisplayName"></span>
<select data-bind="options: Options,                                
                         optionsValue: Value"></select>
</span>
4

1 回答 1

0

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

就像是:

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>
于 2013-03-15T16:55:25.007 回答