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