Ho usato Marionette per una settimana e mi ha davvero reso la vita più facile!trigger caricamento vista quando raccolta o modello recuperato
In questo momento devo essere in grado di notificare a un utente quando viene raccolta una raccolta o un modello, perché alcune viste richiedono molto tempo per il rendering/recupero. Per fare un esempio ho fatto un piccolo mockup:
Quando un utente fa clic su una categoria, una raccolta di tutti gli elementi all'interno di tale categoria devono essere caricati. Prima che la raccolta venga recuperata, voglio visualizzare una vista di caricamento come nell'immagine (vista 1). Quale sarebbe una soluzione elegante per implementarlo. Ho trovato il seguente post in cui un utente abilita un trigger di recupero: http://tbranyen.com/post/how-to-indicate-backbone-fetch-progress. Questo sembra funzionare ma non proprio come volevo. Questo è qualcosa che mi si avvicinò con:
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)
}
});
Sarebbe bello però se potessi avere un attributo opzionale chiamato 'LoadItemView', per esempio. Quale sostituisce l'itemView durante il recupero. Questa sarebbe una buona pratica secondo te?
Utilizzare collection.on ('request') invece di collection.on ('fetch'). E collection.fetch ({reset: true}) invece di collection.fetch(). ;) –