2013-03-01 16 views
5

Bir sorunum var: CollectionView benim ItemViews'umu görüntülemiyor. Bir Koleksiyon'dan bir koleksiyon görünümüne geçiriyorum. CollectionView olarakKukla Koleksiyonu Görüntüle, getirme koleksiyonu olayları tetiklemiyor

// Create a a collection for the view 
    this.articles = new Articles(null, { 
     organizationId : this.model.organizationId, 
     projectId : this.model.id 
    }); 

    var articlesView = new ArticleCollectionView({ collection : this.articles}); 
    this.articlesRegion.show(articlesView); 

: Sayfa düzeninde

: Ben CollectionView yılında koleksiyonu getirilirken am

define([ 
    'marionette', 
    'templates', 
    'i18n!nls/projectDashboard', 
    'views/projectDashboard/ArticleItem' 
], function (Marionette, templates, msg, ArticleItemView) { 

    return Marionette.CollectionView.extend({ 

     initialize : function() { 
      this.listenTo(this.collection, "reset", this.render); 
      this.collection.fetch(); 
     }, 

     itemView : ArticleItemView 

    }); 

}); 

ItemView In:

define([ 
    'marionette', 
    'templates', 
    'models/Article' 
], 
function (Marionette, templates, Article) { 

    return Marionette.ItemView.extend({ 

     initialize : function() { 
      console.log('itemviewrender'); 
     }, 

     template : templates.projectDashboard.articleItem 
    }); 

}); 

genel olarak kurulum çalışıyor. Bu çalışmayı elde etmenin bir yolunu buldum: Koleksiyonu düzende getir ve başarı geri dönüşünde bölgeye CollectionView göster.

Koleksiyondaki dinleyicilerin eklenmesi Koleksiyon için başarısız oldu. Hiçbir olay

this.collection.on('reset', this.render, this); 

veya

collectionEvents : { 
    'reset' : 'render' 
} 

Sadece toplama getirilirken eğer madde Görüntüleme var olan toplama Görünüm rerender istedikleri gibi zorunlu ve bildirime dinleyici için ateşlenir. Eminim bir şey özledim. Herhangi bir yardım takdir edilir!

GÜNCELLEME: İlgi çekici bir şey buldum: Koleksiyonda düzeni getirip toplama başarısını geri çağırırsanız koleksiyonunu oluşturursam zaten söyledim. İlginç olan: Getirilen koleksiyonu geçersem de dinleyiciler çalışır. Yeniden 'u initialize numaralı telefondan arayarak tetiklerim. Ardından yeniden çalışma. Pasajdan koleksiyon geçişi etrafında bir şey olmalı.

+0

Etkinliği nerede ciltliyorsunuz? CollectionView' başlatma yönteminde olmamalıdır? Ayrıca, "on" – neebz

+0

yerine "listenTo" kullanmayı deneyin, bunlar CollectionView'dadır, daha iyi bir anlayış için CollectionView'a eklemeliyim, sanırım, – pfried

+0

ya da listenen ile çalışın. Dokümanlara göre, Marionnette'in sizin için otomatik olarak yaptığı gibi olayları manuel olarak bağlama gereği duymuyorsunuz: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md# collectionview-render. Bu durumda garip bir sorun var gibi görünüyor, – neebz

cevap

2

Sen collectionEvents İşte

kullanmak istediğiniz koleksiyonu tam arka uç

doldurulan edildiğinde tetiklenecek hale örnekte kukla Dokümanlar

Marionette.CollectionView.extend({ 
    collectionEvents: { 
    "sync": "render" 
    } 
}); 

bir örnektir

modelEvents and collectionEvents