Ich benutze Marionette seit einer Woche und es hat mein Leben wirklich einfacher gemacht!trigger loading view wenn Sammlung oder Model geholt
Im Moment muss ich in der Lage sein, einen Benutzer zu benachrichtigen, wenn eine Sammlung oder ein Modell abgerufen wird, da einige Ansichten eine beträchtliche Zeit zum Rendern benötigen. Um ein Beispiel zu geben, ich habe ein kleines Mockup gemacht:
Wenn ein Benutzer klickt auf eine Kategorie, eine Sammlung aller Elemente innerhalb dieser Kategorie müssen geladen werden. Bevor die Sammlung abgerufen wird, möchte ich eine Ladeansicht wie im Bild angezeigt anzeigen (Ansicht 1). Was wäre eine elegante Lösung, dies zu implementieren. Ich habe den folgenden Beitrag gefunden, bei dem ein Benutzer einen Abruftrigger aktiviert: http://tbranyen.com/post/how-to-indicate-backbone-fetch-progress. Das scheint zu funktionieren, aber nicht wirklich wie ich es wollte. Das ist etwas, was ich kam mit:
var ItemThumbCollectionView = Backbone.Marionette.CollectionView.extend({
collection: new ItemsCollection(userId),
itemView: ItemThumbView,
initialize: function(){
this.collection.on("fetch", function() {
//show loading view
}, this);
this.collection.on("reset", function() {
//show final view
}, this);
this.collection.fetch();
Backbone.history.navigate('user/'+identifier);
this.bindTo(this.collection, "reset", this.render, this)
}
});
Es wäre zwar schön, wenn ich ein optionales Attribut ‚LoadItemView‘ zum Beispiel genannt haben könnte. Das überschreibt die ItemView während eines Abrufs. Wäre das Ihrer Meinung nach eine gute Praxis?
Verwenden Sie collection.on ('Anfrage') anstelle von collection.on ('fetch'). Und collection.fetch ({reset: true}) anstelle von collection.fetch(). ;) –