Knockout - 在输入选择上绑定会生成带有空值的选项标记

时间:2015-01-09 04:20:13

标签: knockout.js

我使用Knockout创建了这个HTML标记:

<select data-bind="options: items, optionsText: 'name', value: 'id', event: { change: selectItems }"></select>

和更改事件的此函数:

self.selectItems = function (context, event) {
    // do something with selected value here
};

我希望在event.target.value中获取id的值,但它是空的。检查内部html后,我发现生成的选项,它们都是空的:

<option value="">All Items</option>
<option value="">Bag</option>
// more

我已经确认id在viewModel中有值。有人有什么想法吗?

1 个答案:

答案 0 :(得分:0)

由于您使用的value绑定没有optionsValue绑定,因此id将从items数组设置为选定的选项对象。我认为你的意思是将id设置为所选选项对象的id,因此你应该使用optionsValue='id'

<select data-bind="options: items, optionsText: 'name', optionsValue='id', value: 'id', event: { change: selectItems }"></select>

然后,要访问所选的ID,您可以使用:

self.selectItems = function (context, event) {
    console.debug(context.id());
};