Marionette Collection Anzeigen, abrufen der Auflistung der nicht-trigger-events

Ich habe ein problem: Mein CollectionView nicht wiedergegeben mein ItemViews. Ich pass eine Sammlung aus einem Layout in einer Sammlung anzuzeigen. Ich bin das abrufen der Sammlung in der CollectionView:

In der 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);

In der CollectionView:

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

    });

});

In der ItemView:

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

    return Marionette.ItemView.extend({

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

        template : templates.projectDashboard.articleItem
    });

});

Setup im Allgemeinen funktioniert. Ich fand einen Weg, damit es funktioniert: laden Sie die Sammlung in das layout und zeigen Sie das CollectionView in der region auf der Erfolgs-callback.

Aber hinzufügen Zuhörer auf den collectionView für die Auflistung schlägt fehl. Kein Ereignis ausgelöst wird für imperative und deklarative Zuhörer wie

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

oder

collectionEvents : {
  'reset' : 'render'
}

Möchte ich einfach nur ihn neu zu Rendern der Ansicht Sammlung mit items, wenn die Sammlung geholt. Ich bin sicher, dass ich etwas verpasst. Jede Hilfe ist willkommen!

UPDATE: ich fand etwas Interessantes:
Ich sagte bereits, wenn ich Holen die Sammlung in das layout und erstellen der collectionView auf der Erfolgs-callback funktioniert es. Das interessante ist: Die Hörer funktionieren auch, wenn ich übergeben Sie die geholt Sammlung. Ich trigger Sie durch den Aufruf this.collection.fetch() im initialize wieder. Dann die rerendering funktioniert. Es muss etwas sein, um die Sammlung pass aus dem layout.

  • wo sind verbindliche Veranstaltung ? sollte es nicht in der CollectionView initialize-Methode? Auch versuchen listenTo statt on
  • Sie sind in der collectionView, sollte ich hinzufügen, die CollectionView zum besseren Verständnis, ich denke, doenst Arbeit mit listenTo entweder
  • das ist interessant. laut docs es scheint, dass Sie nicht brauchen, um manuell binden Ereignisse als Marionnette macht es automatisch für Sie, finden Sie unter: github.com/marionettejs/backbone.marionette/blob/master/docs/... . In diesem Fall scheint es ein komisches Problem,
  • können Sie setzen einen breakpoint in Ihre app in Zeile#1202 hier > github.com/marionettejs/backbone.marionette/blob/master/lib/... und sehen, ob es wird als richtig.
  • Es heißt richtig
  • vielleicht ist es etwas, über das layout, den ich gelesen : github.com/marionettejs/backbone.marionette/blob/master/docs/... und es ist irgendwie verwirrend, aber vielleicht beschreibt das ein komisches Verhalten
  • Welche version der Marionette, die Sie benutzen? Links zu Google docs und github den Quellcode verweist auf die neueste version. Aber Sie mit itemview Eigenschaft in CollectionView Erklärung, die geändert wurde, um childView in der version 2.x-Marionette.
  • leider bin ich nicht mehr, ich habe derzeit keine Zeit um einen Blick zu nehmen

InformationsquelleAutor pfried | 2013-03-01
Schreibe einen Kommentar