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 在 viewModel 中有值。有人有什么想法吗?
由于您使用的是 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());
};
我有这个 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 在 viewModel 中有值。有人有什么想法吗?
由于您使用的是 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());
};