【发布时间】:2013-06-20 16:14:40
【问题描述】:
当拥有从 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 控制台显示: 未捕获的错误:无法解析绑定。 消息:ReferenceError:myCompute 未定义; 绑定值:文本:myCompute
似乎 ko.mapping.fromJS 没有将其转换为 MyTestModel。我在想这是因为淘汰赛不知道 MyTestModel 但我不确定如何判断我的模型?
无论如何,谢谢大家的时间!
【问题讨论】:
-
你能显示chargeEliminations函数和数据中的json吗?
-
chargeEliminations 应该是 myTestModels。我为示例更改了所有内容的名称。
-
还添加了json数据。
标签: jquery knockout.js knockout-2.0 knockout-mapping-plugin