Ich habe ein Problem: Mein CollectionView
rendert meine ItemViews
nicht. Ich übergebe eine Sammlung aus einem Layout an eine Sammlungsansicht. Ich Abrufen der Sammlung in der CollectionView
:Marionetten-Sammlung Ansicht, Sammlung holen löst keine Ereignisse aus
Im Layout:
// 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);
Im Collection:
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
});
});
Im ItemView:
define([
'marionette',
'templates',
'models/Article'
],
function (Marionette, templates, Article) {
return Marionette.ItemView.extend({
initialize : function() {
console.log('itemviewrender');
},
template : templates.projectDashboard.articleItem
});
});
Das Setup im Allgemeinen funktioniert. Ich habe einen Weg gefunden, das funktioniert zu bekommen: Holen Sie die Sammlung in das Layout und zeigen Sie die CollectionView
in der Region auf den Erfolg Callback.
Das Hinzufügen von Listenern in CollectionView für die Auflistung schlägt jedoch fehl. Kein Ereignis wird wie
für zwingend notwendig und deklarative Zuhörer gefeuertthis.collection.on('reset', this.render, this);
oder
collectionEvents : {
'reset' : 'render'
}
Ich möchte einfach die Sammlung Blick auf rerender mit ihm Artikel Ansichten ist, wenn die Sammlung geholt wird. Ich bin mir sicher, dass ich etwas verpasst habe. Jede Hilfe wird geschätzt!
UPDATE: Ich habe etwas Interessantes gefunden: Ich sagte bereits, wenn ich die Sammlung im Layout abholen und die CollectionView auf dem Erfolg Callback erstellen, funktioniert es. Das Interessante ist: Die Zuhörer funktionieren auch, wenn ich die geholte Sammlung durchlasse. Ich trigne sie durch erneutes Rufen this.collection.fetch()
in initialize
. Dann funktioniert das Rendern. Es muss etwas um den Sammelpass vom Layout her sein.
wo sind die Ereignisse verbindlich? sollte es nicht in der Initialisierungsmethode 'CollectionView' sein? Versuchen Sie auch 'listenTo' anstelle von' on' zu verwenden – neebz
sie sind in der collectionView, ich sollte eins in der CollectionView zum besseren Verständnis hinzufügen, ich denke, doenst arbeiten mit listenTo entweder – pfried
das ist interessant. Laut der Dokumentation scheint es, dass Sie Ereignisse nicht manuell binden müssen, da Marionnette dies automatisch für Sie erledigt, siehe: https://github.com/marionettejs/backbone.marionette/blob/master/docs/marionette.collectionview.md# Sammlungsansicht-Rendern In diesem Fall scheint es ein seltsames Problem, – neebz