我发现在我的应用程序中,我重复了很多以下模式(见下面的代码)。我必须调用 BindMyEvents(true) 进行第一次加载,然后调用 BindMyEvents(false) 进行后续数据检索。
它是延迟加载的,所以我不希望将数据序列化到 HTML 源中。有没有比将布尔标志传递到我的 Bind() 方法更好的方法?是否有通过淘汰赛实现这一目标的标准模式?
我在想我是否应该在视图模型定义中设置 viewAlertsModel.alerts = null,然后让 Bind 函数检查这一点。如果设置为 null 则调用映射方法,然后调用 applyBindings()?
function BindMyEvents(initialMap) {
// get alerts, map them to UI, then run colorbox on each alert
$.getJSON("/Calendar/MyEvents/", {},
function (data) {
if ( initialMap ) {
// set-up mapping
viewAlertsModel.alerts = ko.mapping.fromJS(data);
ko.applyBindings(viewAlertsModel,$("#alertedEventsContainer")[0]);
} else {
// update
ko.mapping.fromJS(data, viewAlertsModel.alerts);
}
});
}