在应用加载时骨干多次获取数据?

时间:2013-05-15 18:22:39

标签: jquery backbone.js

我有一些主干集合应该在加载时加载到我的应用程序中(引导数据)。这些数据是静态信息,可在任何地方用于填充列表,下拉等。

在我的路由器即时启动之前,加载这些数据并确保它们已满载的最佳方法是什么

App.StaticCollections.contactTypes.fetch({}),
App.StaticCollections.documentTemplates.fetch({}),
App.StaticCollections.invoiceStatuses.fetch({}),
App.StaticCollections.estimateStatuses.fetch({}),
App.StaticCollections.currencies.fetch({})

App.Router = new MainRouter();
Backbone.history.start({
    pushState: false,
    root: App.Root
});

2 个答案:

答案 0 :(得分:0)

http://api.jquery.com/jQuery.when/

$.when(
  App.StaticCollections.contactTypes.fetch({}),
  App.StaticCollections.documentTemplates.fetch({}),
  App.StaticCollections.invoiceStatuses.fetch({}),
  App.StaticCollections.estimateStatuses.fetch({}),
  App.StaticCollections.currencies.fetch({})
).then(function () {
  App.Router = new MainRouter();
  Backbone.history.start({
    pushState: false,
    root: App.Root
  });
});

答案 1 :(得分:0)

捎带Sushanth的评论......一般来说,你不想仅仅为了让你的页面呈现而提出多个请求。如果存在网络延迟,那对用户来说可能会非常令人沮丧。

使用Collection.reset

将数据引导至您的页面
App.StaticCollections.contactTypes.reset([ 
    { attr1: "val1", ... }
]);

如果适用,请使用服务器端语言动态嵌入值。