WCF サービスから json データを受信しており、それをビューモデルにマップしたいと考えています。
JSON データ:
{"bios" :
{ "Caption" : "something",
"Version": "something else",
....
}
}
私のHTML部分は次のとおりです。
<ul class="biosContentUL">
<li class="biosContentLI">
<p>
<b>Caption: </b><span data-bind="text: bios.Caption"></span>
</p>
</li>
<li class="biosContentLI">
<p>
<b>Version: </b><span data-bind="text: bios.Version"></span>
</p>
</li>
.......
</ul>
私のViewModelは次のとおりです。
var viewModel = {
bios: ko.observable(),
cpu: ko.observable(),
.....
}
$(document).ready(function () {
ko.applyBindings(viewModel);
}
);
マッピング プラグインを使用しようとしていますが、正しく動作しません。
function showBios() {
var response = $.ajax({
type: "GET",
datatype: "json",
url: "...",
success: function (data) {
objJS= jQuery.parseJSON(data);
viewModel.bios(ko.mapping.fromJS(objJS));
// I also tried this:
// ko.mapping.fromJS(objJS, {}, viewModel);
}
});
次のコードは機能しますが、ViewModel には observableArrays も含まれているため、applyBindings() をもう一度呼び出すと、その内容が失われます。
viewModel.bios = ko.mapping.fromJS(objJS);
ko.applyBindings(viewModel);
受信したデータを viewModel プロパティの "bios" にマップするにはどうすればよいですか? ページの各部分に複数のビューモデルを用意して、各モデルで複雑なオブジェクトではなく単純なプロパティを宣言できるようにするのは良い方法ですか?