如何防止CollectionView呈现,直到集合中的所有项目都已添加/呈现?

时间:2012-08-09 02:59:22

标签: backbone.js marionette

我想显示加载消息,直到集合视图及其子视图已完全呈现。

2 个答案:

答案 0 :(得分:1)

当一个集合中没有项目时,你可以用emptyView来表示。集合视图将自动处理。只要它看到集合下降到零项,它就会渲染它。用它来显示你的“加载”信息。


LoadingMessageView = Backbone.ItemView.extend({
  template: "#loading-message-template"
});

ItemView = Backbone.ItemView.extend({
  template: "#normal-item-view"
});

MyCollectionView = Backbone.CollectionView.extend({
  emptyView: LoadingMessageView,
  itemView: ItemView
});

然后在您的代码中,您可以将尚未加载的集合传递给视图,显示它,然后加载它。


var col = new MyCollection();
var colView = new MyCollectionView({
  collection: col
});

App.someRegion.show(colView);

col.fetch();

这将呈现并显示集合视图,最初显示emptyView的加载消息。当集合完成它的获取时,“reset”事件将触发,集合视图将重新呈现所有项目。

答案 1 :(得分:0)

可以这么简单吗?

// code simplified no tested
var MyCollectionView = Backbone.View.extend({
  render: function(){
    $("#loading").show();
    // render stuff
    $("#loading").hide();
  }
});

我错过了什么吗?