0

この質問は、この関連質問の拡張です。

デリックのアドバイスを受けて、データは正しい形になりました。つまり、Departmentオブジェクトのコレクションがあり、それぞれに。のコレクションがありUsersます。

再びデリックのアドバイスに従って、私はのをレンダリングしようとしてCollectionViewCompositeViewます

私のコレクションビューは次のようになります

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オブジェクト)とそのコレクションを渡すことができますが、オブジェクトに'on'メソッドがないと関数が文句を言っているusersため、それらの一方または両方が間違ったタイプのオブジェクトのようです。Marionette bindTo

私は何が間違っているのですか?

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 に答える