ドロップダウンリストを使用して、オブジェクトの既存のプロパティを更新しようとしています。このソリューションでは、ノックアウトおよびko.mappingフレームワークを使用してデータを取得しました。私が抱えている問題は、既存のオブジェクトがすでに設定しているリスト内のアイテムを選択することです。
例:ドロップダウンリストに2つのオプションが含まれていて、たとえば最初の男性と2番目の女性があり、それが表すプロパティがすでに女性に設定されている場合、ドロップダウンで女性を選択する必要があります。ただし、ドロップダウンリストはデフォルトでリストの最初の項目(男性)になり、基になるオブジェクトが男性に更新されます。
上記の簡単な例をノックアップしました。データをモックアップして、処理しているものと一致させました。つまり、サーバーからのjsonがko.mappingフレームワークを使用してマップされています。
ビューモデル
var listItems = '[{"id": "1","name": "male"},{"id": "2","name": "female"}]';
var savedRecord = '{"gender": {"id": "2","name": "female"}}';
ViewModel = function () {
mappedListItems = ko.mapping.fromJSON(listItems);
mappedSavedRecord = ko.mapping.fromJSON(savedRecord);
}
ko.applyBindings(new ViewModel());
html
<select data-bind="options: mappedListItems,
optionsText: 'name',
value: mappedSavedRecord.gender"></select>
<p>mappedSavedRecord.gender.name = <span data-bind="text: mappedSavedRecord.gender.name"></span>
JsFiddle