【发布时间】:2012-04-07 09:01:08
【问题描述】:
我正在尝试通过 Knockout JS 将 json 数据从外部源加载并解析到表中。至此,通过如下代码一切都成功了:
// Snippet
var self = this;
self.notices = ko.observableArray([]);
self.currentTab = ko.observable(5);
ko.computed(function() {
$.getJSON('http://json.source.here.com/tab/'+ko.toJS(self.currentTab), function(threads) {
if (threads !== null) {
self.notices(threads);
} else {
self.notices([]);
}
});
}, self.notices);
当用户单击某个选项卡时,它会根据所选选项卡值 (self.currentTab) 以行的形式 (self.notices) 将 json 数据(论坛线程)加载到表中。
一切都按预期工作,但是,我注意到在浏览其他没有上述绑定的页面时,json 仍在加载($.getJSON 被触发)。我担心这可能会对我的网站的性能产生一些不利影响,因为它正在加载 json 源,即使它不需要。
编辑:我通过 Google Chrome 的开发者控制台发现了这一点。
我目前将我的视图模型保存在一个 JavaScript 文件中,该文件也被所有其他页面使用。它由所有页面的绑定组成。
我的问题是,如何在特定页面上加载 json 数据,或者仅在存在绑定时加载 - 延迟加载?最好是,我希望将所有绑定保存在一个 JavaScript 文件中,我不想将它们分开并在每个页面的基础上加载它们。
【问题讨论】:
标签: javascript jquery json knockout.js lazy-loading