1

我有一个 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}))
)

在我的 ItemCollection 中,

class ItemCollection extends Backbone.Collection
  model :ItemModel
  url   :"/get_items"

  initialize: =>
    @search()

  search: =>
    @reset()
    @fetch()

上面的代码立即显示 ItemListView 并在获取项目时添加项目。

如何等到集合完成获取然后在“item_container”中显示 ItemListView?

4

2 回答 2

2

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

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

@fetch async: false
于 2013-04-17T08:34:01.437 回答
1

fetch 返回一个 jquery 承诺。所以你可以做

collection.fetch().done(function() { 
 // create & show the view
});
于 2013-04-17T13:26:41.507 回答