【问题标题】:how to preload collection from server如何从服务器预加载集合
【发布时间】:2013-10-08 21:06:19
【问题描述】:

我正在开发一个包含骨干网.marionette 和 phonegap 的混合应用程序。 我的收藏品没有及时准备好在视图中使用时遇到问题,因为它们仍在从服务器中获取。 如何预加载我的集合,以便我的视图可以在应用启动时使用它们?

【问题讨论】:

  • 你想用收集数据做什么?
  • 收集数据用于填充视图
  • 您可以进行预加载或仅订阅主干集合/模型更改或重置事件。或者您可以预取并将其存储在本地存储中。
  • 用户必须经过身份验证才能从服务器获取集合

标签: javascript backbone.js marionette backbone.js-collections


【解决方案1】:

如果您只是使用视图在屏幕上呈现它们。您可以使用Marionette.CollectionView,它将在添加集合的模型时将它们添加到视图中。

var MyCollectionView = Marionette.CollectionView.extend({
   //add Item View and other required fields
});

//myView will listen to the myCollection's events such as add, remove etc and will update itself
var myView = new MyCollectionView({collection: myCollection});
myCollection.fetch();  //Will fetch the data from the server

//Render the view whenever you wish.
myView.render();

如果你真的想预加载。您可以先获取并在成功回调时呈现视图。

collection.fetch({
   success : function(
      view.render();
   )
});

【讨论】:

  • 当您实例化一个新的 Marionette 视图并向其传递一个集合时,它将在集合同步时自动更新。 var myView = new MyCollectionView({collection: myCollection}); myCollection.fetch();
  • myView.render() 甚至不需要。见marionette.collectionview.js的第27行
  • @thibauts 为什么会这样。为了实际渲染集合视图,您必须调用 render.对?我在集合视图本身的木偶代码中没有看到任何自动渲染。
  • 点了。但那是在重置事件中。您可以在 fetch 调用中指定 {reset: true},或者手动处理渲染顺序。有时您希望先呈现包装器视图,然后再呈现集合视图。
  • 这就是我们讨论并拥有此类社区网站的原因。我们每次都在学习。我还了解了重置事件和集合视图。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多