Knockout - 绑定输入 select 产生具有空值的选项标签

Knockout - Binding on an input select produces option tags with empty values

我有这个 HTML 使用 Knockout 的标签:

<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,发现生成的options都是空的:

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

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

由于您使用的是 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());
};