0

这个问题是这个相关问题的延伸。

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

CollectionView再次按照 Derick 的建议,我正在尝试渲染CompositeViewa

我的收藏视图看起来像这样

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”方法。

我究竟做错了什么?

4

2 回答 2

3

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

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

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

于 2012-06-30T16:23:39.280 回答
0

您还可以考虑使用骨干关系,它可以让您定义具有子模型或子集合的模型。

于 2014-04-12T02:24:03.280 回答