我正在尝试使用Knockout.JS在我的HTML中使用以下代码调用JSON结果。
$(document).ready(function () {
var submissionViewModel = new SubmissionModel();
submissionViewModel.getSubmission().done(function () {
ko.applyBindings(submissionViewModel, document.getElementById("submission"));
})
});
var SubmissionModel = function () {
var self = this;
self.Submission = ko.observable(null);
self.getSubmission = function () {
$.getJSON('/Submission/GetSubmission',
function (data) {
self.Submission = ko.mapping.fromJSON(JSON.stringify(data));
}
);
}
}
对于初学者来说,我对Knockout JS lib很新,所以请耐心等待。从我可以得到的是我的应用程序绑定发生在我的JSON加载到Submission属性之前。
我尝试将线放到床上并开始摇动摇篮,但这导致了以下错误
未捕获的TypeError:无法处理绑定文本:function(){return()。消息:无法读取null
的属性
我得到了正在发生的事情,我需要暂停执行$(document).ready
代码,直到JSON调用完成。我尝试使用jQuery中的.done
函数实现此目的,但这导致了以下错误
无法读取未定义的属性“已完成”
因为我不是那种经验丰富的淘汰赛,你们中的任何人都能指出我正确的方向吗?
答案 0 :(得分:2)
你的代码似乎很好。在self.getSubmission
函数中,返回承诺对象,如
self.getSubmission = function () {
return $.getJSON('/Submission/GetSubmission',
function (data) {
self.Submission(ko.mapping.fromJSON(JSON.stringify(data)));
}
);
}
'done'未定义,因为您没有使用javascript promise对象链接它。