JQuery を使用して AJAX 呼び出しを行い、MVC コントローラーから JSON を送信しています。成功のコールバックが実行されたら、それをビュー モデルのオブザーバブルに渡します。ビュー モデルに list という名前のプロパティがあり、次の JSON を送信します。
{ Items: [ { .. }, { .. }] }
テンプレートとコンテナーは次のようになります。
<div data-bind="template: {name:'Template', data:list}"></div>
<script type="text/html" id="Template">
<section class="List">
<ul id="MyList" data-bind="foreach:Items">
これをビューにバインドしようとすると、エラーが発生します。
Microsoft JScript runtime error: Unable to parse bindings.
Message: ReferenceError: 'Items' is undefined;
Bindings value: foreach:Items
アイテムは正しく、ビュー モデルに正しく割り当てられており、Items プロパティが実際に未定義ではないことを確認しました。別のビューにまったく同じコードがありますが、ここでは機能しません。理由と、このエラーの原因は何ですか?
編集:私は次のように見え、バインドされているビューモデルを持っています:
function viewModel() {
var self = this;
self.list = ko.observable(null);
}
$.ajax({
.
.
context: model, //reference to view model, which is a valid reference
success: function(d) {
this.list(d); //d is JSON laid out above
}
});
ありがとう。