私のMVCレイザービューはこのマークアップをレンダリングします:
function existingNamingsViewModel() {
var self = this;
var initialData = @Html.Raw(new JavaScriptSerializer().Serialize(Model));
self.ExistingNamings = ko.observableArray(initialData);
}
ko.applyBindings(new existingNamingsViewModel(), document.getElementById("namings-control"));
initialData
変数が次のように初期化された、正しいJSシリアル化コードに。
var initialData = [{"TypeName":"Orders","NameBlocks":["{intInc_G}","/","{intInc_D}","/02/-","{yy}"],"ParamBlocks":["2296","","1","",""]}];
koバインディングが適用された後、結果のhtmlは、編集可能なグリッドの形式になります。
ユーザーがこれらの入力フィールドのデータを変更するたびにビューモデルを自動的に更新できるようにするには、knockoutJSが必要です。ただし、ビューモデルは単純なJSONオブジェクトから初期化されたため、ではNameBlocks
ありParamBlocks
ませんko.observableArray
。私は彼らがいる必要があります。どうすればこれを達成できますか?
Name
PS 1つのアイデアは、かみそりが/ParamBlocks
配列のみをシリアル化し、ExistingNamings
配列がjavascriptコードを介して手動で入力され、にName
/ParamBlocks
ラップされたカスタムのネーミングクラスオブジェクトを作成する、より複雑な初期化を行うことko.observableArray
です。しかし、これが唯一の方法ですか?