BackboneJS MarionetteJS - 等待收集完成取样

时间:2013-04-17 08:27:06

标签: backbone.js coffeescript marionette

我有一个BackboneJS& MarionetteJS app

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?

2 个答案:

答案 0 :(得分:2)

使用监听器知道集合何时完成其工作。如果您正在重置reset(不是Backbone 0.9.10的默认行为)或sync(始终完成),您可以收听。{
1}} 或者您可以使用success回调 Source

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

@fetch async: false

答案 1 :(得分:1)

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

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