通常,当我有一个选择列表时,我将它与敲除绑定如下:
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
Run Code Online (Sandbox Code Playgroud)
但这种绑定存在问题:您没有选定的对象.你有它的ID.如何合并这两个要求:绑定项目的ID和项目本身?
现在我使用computed
observable来获取所选项目,通常如下所示:
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];
});
Run Code Online (Sandbox Code Playgroud)
我尝试使用自定义函数来包装值getter,但是当选择更改时,它会调用每个元素,因此使用此方法没有任何好处.这是一个jsfiddle.
删除optionsValue
参数.然后,所选值将是"选定项目"而不是Id
.
更新的代码将是:
<select
data-bind="
options: data,
optionsText: 'Name',
optionsCaption: 'Select ...',
value: dataSelectedItem" ></select>
Run Code Online (Sandbox Code Playgroud)
dataSelectedItem
现在将拥有所选项目.
一旦你有了这个项目.你可以Id
从对象本身获得dataSelectedItem().Id
归档时间: |
|
查看次数: |
3509 次 |
最近记录: |