Knockout.js 所选选项Id和值
通常,当我有一个选择列表时,我会用如下方式将其绑定:Knockout.js 所选选项Id和值,knockout.js,Knockout.js,通常,当我有一个选择列表时,我会用如下方式将其绑定: <select data-bind=" options: data, optionsText: 'Name', optionsValue: 'Id', optionsCaption: 'Select ...', value: dataSelectedId" ></select> self.dataSelectedCO = ko.c
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
self.dataSelectedCO = ko.computed(function() {
for (var i = 0; i < self.data().length; ++i)
if (self.data()[i].Id() == self.dataSelectedId())
return self.data()[i];
});
我曾尝试使用自定义函数包装value getter,但当选择发生变化时,每个元素都会调用它,因此使用这种方法没有任何好处s是JSFIDLE。删除
选项value
参数。然后,所选值将是“所选项目”,而不是Id
更新后的代码为:
<select
data-bind="
options: data,
optionsText: 'Name',
optionsCaption: 'Select ...',
value: dataSelectedItem" ></select>
dataSelectedItem
现在将具有所选项目
一旦你有了物品。您可以从对象本身获取
Id
,如dataSelectedItem()。Id
我不能这样做,因为这样我就无法将此SELECT放置在发送到服务器的表单中,除非我为所选Id创建额外的隐藏字段。但是使用绑定了Id的隐藏字段将使其生效。如果您想将Id作为SELECT的值,然后对所选项目使用计算的可观测值是一个非常好的方法。