1

ドロップダウンリストを使用して、オブジェクトの既存のプロパティを更新しようとしています。このソリューションでは、ノックアウトおよび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

http://jsfiddle.net/tgriley1/tLHhE/

4

1 に答える 1

1

ドロップダウンの value 属性に使用するフィールドを Knockout に指示していません。また、オプションを事前選択するために使用する保存済みレコードのフィールドも指示していません。

<select data-bind="options: mappedListItems, 
                   optionsText: 'name',
                   optionsValue: 'id',                                      
                   value: mappedSavedRecord.gender.id"></select>
于 2013-02-28T12:34:35.323 に答える