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