2013-09-01 4 views
6

Backbone CompositeViewから最後のItemViewを取得できますか?コレクションの最後のモデルを取得するための多くのドキュメントが見つかりましたが、コレクションのビューの最後のビューは見つかりませんでした。MarionetteのCompositeViewから最後のアイテムビューを取得

私がこれをやりたいのは、テーブルの最後の行を少し違ってレンダリングできるからです。

以下は私が今使っているコードですが、うまくいきますが、作成してレンダリングしたCompositeViewから正しいItemViewを取得できれば、あまり「ハッキー」ではありません。 jQueryを使用して、最後の要素のCompositeViewに含まれるDOMの部分全体を検索し、その要素を操作します。

B.ListControl.View = Backbone.Marionette.CompositeView.extend({ 
    itemView: ..., 
    itemViewContainer: ..., 
    template: ..., 
    // ON RENDER 
    onRender: function(){ 
     // Add button to the last element in the list 
     this.$el.find('div:last').text('Custome stuff goes here'); 
    } 
}); 

ありがとう!

答えて

10

あなたのコレクションは、あなたがこの方法で最後の項目を取得することができますフェッチさ:

this.children.findByIndex(this.children.length - 1); 

ベビーシッターのプラグインは、あなたのために有用な方法の多くを提供します。

findByModelfindByCollectionfindByCustomfindByIndexfindByCid

+0

恐ろしく、本当にありがとうございます! –

+0

'ChildViewContainer'(' .children'がのインスタンスです)からビューを見つけるためのBackbone.BabySitterのドキュメント:https://github.com/marionettejs/backbone.babysitter#retrieving-views – alxndr

+0

n.b. Marionetteの 'CompositeView'は' .childViewContainer'というプロパティを持っていますが、それは無関係です:Marionetteは 'childView'クラスのインスタンスをどこに置くかを決めるために使うjQueryセレクタ文字列であると考えています。 https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md#compositeviews-childviewcontainer – alxndr

関連する問題