getJSON から受信したコレクションがある場合、Knockout を動作させることができないようです。これが私のコードの例です
function MyTestModel() {
this.modelProperty = ko.observable();
this.myCompute = ko.computed(function () {
return "test";
});
}
function MyViewModel() {
var self = this;
self.myTestModels = ko.observableArray();
}
var vm = new MyViewModel();
ko.applyBindings(vm);
$(document).ready(function () {
$.getJSON("http://MyUrl.com/api/MyController", function (data) {
var observableData = ko.mapping.fromJS(data);
var array = observableData();
vm.myTestModels(array);
});
});
<tbody data-bind="foreach: myTestModels">
<tr>
<td data-bind="text: modelProperty" ></td>
<td data-bind="text: myCompute" ></td>
</tr>
</tbody>
[{"modelProperty":"My Property 1"},{"modelProperty":"My Property 2"}]
modelProperty のデータは表示されますが、Chrome JavaScript コンソールには次のように表示されます: Uncaught Error: Unable to parse bindings. メッセージ: ReferenceError: myCompute が定義されていません。バインディング値: テキスト: myCompute
ko.mapping.fromJS が MyTestModel に変換していないようです。これは、ノックアウトが MyTestModel について知らないためだと思いますが、私のモデルについてどのように伝えればよいかわかりませんか?
とにかく、みんなの時間をありがとう!