通常,当我有一个选择列表时,我会将其与敲除绑定,如下所示:
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
但是这种绑定存在一个问题:您没有选定的对象。你有它的 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];
});
I've tried to wrap value getter using a custom function but it's called for every element when selection changes, so there are no benefits here of using this approach. 这是一个jsfiddle。