次のコードは、ハードコードされた配列(initialData1)でうまくいきますが、モデルを初期化するためにjquery .ajax(initialData)を使用する必要があります。.ajaxデータでknockoutjsビューモデルを初期化する方法
$(function() {
function wiTemplateInit(winame, description) {
this.WIName = winame
this.WIDescription = description
}
var initialData = new Array;
var initialData1 = [
{ WIName: "WI1", WIDescription: "WIDescription1" },
{ WIName: "WI1", WIDescription: "WIDescription1" },
{ WIName: "WI1", WIDescription: "WIDescription1" },
];
console.log('gridrows:', initialData1);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: "{UserKey: '10'}",
url: "WIWeb.asmx/GetTemplates",
success: function (data) {
for (var i = 0; i < data.d.length; i++) {
initialData.push(new wiTemplateInit(data.d[i].WiName,data.d[i].Description));
}
//console.log('gridrows:', initialData);
console.log('gridrows:', initialData);
}
});
var viewModel = function (iData) {
this.wiTemplates = ko.observableArray(iData);
};
ko.applyBindings(new viewModel(initialData));
});
しかし私は、ほとんどすべての例は、ビューモデルに渡されるハードコーディングされたデータを示し、knockoutjsのウェブサイト上の例から作業しようとしています。
のようなものを使用してみてください、あなたは戻ってくるかを確認するために、ネットワークの伝送をデバッグしていますか?何かが戻ってくるかどうかを確認してください。そうであれば、そのデータはどのような形状ですか?ハードコードされた日付と同じですか?エラーはありますか? –
"しかし、ほとんどすべての例では、ハードコードされたデータがビューモデルに渡されます。"あなたは確かですか?(http://knockoutjs.com/documentation/json-data.html) – kamranicus
ジョン - 私はデバッグし、console.logで配列をチェックし、データはクライアントに到達しています。どちらの配列もエラーなしの同じ構文です。 –