通常、選択リストがある場合、次のようにノックアウトでバインドします。
<select
data-bind="
options: data,
optionsText: 'Name',
optionsValue: 'Id',
optionsCaption: 'Select ...',
value: dataSelectedId" ></select>
しかし、このようなバインドには問題があります。選択したオブジェクトがありません。代わりにその ID があります。この 2 つの要件をマージする方法: アイテムの 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];
});
カスタム関数を使用して値ゲッターをラップしようとしましたが、選択が変更されるとすべての要素に対して呼び出されるため、このアプローチを使用するメリットはありません。ここにjsfiddleがあります。