此问题是此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'方法。
我做错了什么?
答案 0 :(得分:3)
itemModel.get("users")
返回什么?
如果这是返回JavaScript数组或对象文字,那就是问题所在。您必须传递有效的Backbone.Collection作为集合参数,而不仅仅是一个对象数组。
collection: new Backbone.Collection(itemModel.get("users"))
答案 1 :(得分:0)
您还可以查看使用backbone-relational,它可以让您定义具有子模型或子集合的模型。