我有来自服务器的 JSON 数据:
{"HaveNotification":false,"IsError":false,"Title":null,"Description":null}
并尝试通过 ko.mapping 填充此视图模型:
var notifyVM = {
HaveNotification: ko.observable(true),
IsError: ko.observable(false),
Title: ko.observable('Title goes here'),
Description: ko.observable('Description goes here'),
}
使用此代码,在轮询间隔上调用:
function pollNotifications() {
$.getJSON('@Url.Action("GetNotifications", "Home")', function (data) {
ko.mapping.fromJSON(data, notifyVM);
setTimeout(pollNotifications, 10000);
});
}
这是页面加载代码:
$(function () {
ko.applyBindings(notifyVM);
setTimeout(pollNotifications, 10000);
});
但它不工作。如果我在 fromJSON 调用后检查视图模型,则未更新可观察对象,它们仍处于初始值。
更新:更多信息......如果我在 pollNotifications 函数中执行此操作
var newVM = ko.mapping.fromJSON(data);
我注意到它创建的视图模型与我的不一样,它由一个单独的可观察函数组成,而我的是一个具有一组可观察属性的对象。