Backbone.Marionette CollectionView / CompositeView呈现

时间:2012-06-28 10:51:22

标签: marionette

此问题是此Related question的扩展。

根据Derick的建议,我现在的数据形状正确。即我有一组Department个对象,每个对象都有一个Users的集合。

再次按照Derick的建议,我试图呈现CollectionView CompositeView的<{p}}

我的收藏视图如下所示

class UserListView extends Backbone.Marionette.CollectionView
    itemView: UserCompositeView
    id: "user-list"  

    appendHtml: (collectionView, itemView, index) =>
      itemModel = @collection.at(index)
      itemView = new UserCompositeView
        model: itemModel 
        collection: itemModel.get("users")

      collectionView.$el.append itemView.el

我的Composite View看起来像这样:

  class UserCompositeView extends Backbone.Marionette.CompositeView
    itemView: UserItemView
    itemViewContainer: '#users'

如果我没有覆盖appendHtml方法,那么视图呈现但它只呈现Department模型的属性。它不会呈现users集合。

当我覆盖appendHtml中的CollectionView方法时,我可以传递模型(Department对象)和users的集合,但其中一个或两个似乎是错误的对象类型,因为Marionette bindTo函数抱怨对象没有'on'方法。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

itemModel.get("users")返回什么?

如果这是返回JavaScript数组或对象文字,那就是问题所在。您必须传递有效的Backbone.Collection作为集合参数,而不仅仅是一个对象数组。

collection: new Backbone.Collection(itemModel.get("users"))

答案 1 :(得分:0)

您还可以查看使用backbone-relational,它可以让您定义具有子模型或子集合的模型。