使用集合引用初始化CollectionView

时间:2013-06-23 23:01:47

标签: backbone.js marionette

在我的CollectionView Backbone Marionette对象的初始化函数中,我正在执行以下操作:

this.collection_addresses = new AddressCollectionView({
    el: 'ul.addresses',
    collection: options.user.get("addresses")
});

然而,只要AddressCollectionView中引用的对象发生更改,options.user.get("addresses")就永远不会更新,我想Marionnette会自动处理这个问题。使用fetch更新用户对象。有什么想法吗?

编辑#1 只是为了澄清集合视图就像这样

var AddressCollectionView = Backbone.Marionette.CollectionView.extend({
    itemView: AddressItemView,
    tagName: 'ul'
});

感谢。

1 个答案:

答案 0 :(得分:0)

来自v1.0.3源代码,这里是collectionview监听的事件

_initialEvents: function(){
    if (this.collection){
      this.listenTo(this.collection, "add", this.addChildView, this);
      this.listenTo(this.collection, "remove", this.removeItemView, this);
      this.listenTo(this.collection, "reset", this.render, this);
    }
  },

collectionView接受itemView视图对象定义(不是实例)。此itemView使用collectionview中集合中每个项目的模型进行初始化。我会扩展marionette的itemview类,并在那里的模型上监听你的更改事件,并将itemview视图对象定义(不是实例)注入到集合视图中。