2013-09-01 19 views
6

Son ItemView bir omurga kompozitView almak mümkün mü? Koleksiyondaki son modeli elde etmek için çok fazla dokümantasyon gördüm.Marionette 'den son ürün görün Görünümünde göster

Bunu yapmak istememin nedeni, son satırı bir tabloda biraz daha farklı hale getirebilmem.

Aşağıdaki kod şu anda kullanıyorum, iyi çalışıyor, ancak oluşturduğunuz ve işlediğim CompositeView öğesinden doğru ItemView öğesini elde edersem daha az "hacky" olur. Son öğe için CompositeView tarafından içerilen DOM'ın tüm bölümünü aramak için jQuery'yi kullanır, sonra bu öğeyi işler.

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'); 
    } 
}); 

Teşekkürler!

cevap

10

koleksiyonunuzu bu şekilde son öğeyi alabilirsiniz getirilirken:

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

Bakıcı eklentisi sizin için yararlı yöntemlerin bir çok sağlamaktadır:

findByModel, findByCollection, findByCustom, findByIndex, findByCid

+0

Harika, çok teşekkürler! –

+0

Backbone.BabySunucu 'ChildViewContainer '(bu örn. .children'in bir örneğidir) görünümlerini bulmak için belgeler: https://github.com/marionettejs/backbone.babysitter#retrieving-views – alxndr

+0

n.b. Marionette 'CompositeView'' .childViewContainer' adlı bir özelliğe sahiptir ancak ilgisizdir: Marionette, 'childView' sınıfının örneklerini nereye koyacağını belirlemek için kullanacağı bir jQuery seçici dizesi olmasını bekler. https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.compositeview.md#compositeviews-childviewcontainer – alxndr