BackboneJS MarionetteJS-等待集合完成获取



我有一个BackboneJS&MarionetteJS应用

class MyApp extends Marionette.Application
app = new MyApp
app.addRegions
  tag_container    :"#tag_container"
  item_container   :"#item_container"
app.addInitializer( =>
  app.items = new ItemCollection()
  app.item_container.show(new ItemListView({collection:app.items}))
)

在我的项目集合中,

class ItemCollection extends Backbone.Collection
  model :ItemModel
  url   :"/get_items"
  initialize: =>
    @search()
  search: =>
    @reset()
    @fetch()

上面的代码立即显示ItemListView,并在提取项目时添加这些项目。

如何等待集合完成提取,然后在"item_container"中显示ItemListView?

使用监听器来知道集合何时完成了他的工作。如果正在重置reset(不是Backbone 0.9.10的默认行为(或sync(始终完成(,则可以侦听它
或者您可以使用success回调

第三种解决方案是进行同步提取:

@fetch async: false

fetch返回一个jquery promise。所以你可以直接做

collection.fetch().done(function() { 
 // create & show the view
});

最新更新