淘汰:迭代对象并在下拉列表中显示值

时间:2016-08-26 09:01:45

标签: javascript object knockout.js

我需要一些关于js / knockout / databindings的帮助。

在我的代码中,我收到一个这样的对象: Received object

我希望在下拉列表中显示该值,并且该键应存储为值。 我尝试使用像这样的一些敲除数据绑定:

<select id="routeTable" class="form-control" data-bind="
                            options: availableRouteTables,
                            optionsText: availableRouteTables.key,
                            optionsValue: availableRouteTables.value,
                            value: selectedRouteTable,
                            optionsCaption: '- velg rutetabell -'"></select>

我知道&#34; availableRouteTables.key&#34;和&#34; availableRouteTables.value&#34;是错的,但这只是为了解释/展示我想要的东西。

截至目前,该对象在JS中只是这样:

this.availableRouteTables = availableRouteTables;

在下拉列表中显示如下: Dropdown failure

有人可以帮我识别问题并修复它吗? 非常感谢!

1 个答案:

答案 0 :(得分:0)

当您收到数据时,您必须更改其结构以使用选项绑定:

// Convert to array of objects with value and text properties
var availableRouteOptions = [];
for(var key in availableRouteTables) {
    availableRouteOptions.push({
    value: key,
    text: availableRouteTables[key]
  });
}

你必须改变你的绑定:

options: availableRouteOptions,
optionsText: 'text',
optionsValue: 'value',