Używam Backbone Marionettes CollectionView. Próbuję wskazać, że kolekcja jest ładowanie, todo więc używam emptyView do wyświetlania programu ładującego.Marionetka szkieletu: użycie emptyView do załadowania
Jest to jednak zła logika, ponieważ czasami kolekcje są puste, a zatem staje się zepsutym programem ładującym.
Próbowałem za pomocą tego skryptu, ale nie zrobił praca: https://github.com/surevine/marionette-loadingview-plugin
Czy ktoś ma lepsze rozwiązanie? Oto mój obecny kod:
//loadingview
define(["marionette", "text!app/templates/loading.html"], function(Marionette, Template) {
"use strict";
return Backbone.Marionette.ItemView.extend({
template: Template
});
})
//collection
define(["marionette", "text!app/templates/events/collection.html", "app/collections/events", "app/views/events/item", 'app/views/loading'], function (Marionette, Template, Collection, Row, LoadingView) {
"use strict"
return Backbone.Marionette.CompositeView.extend({
template: Template,
itemView: Row,
itemViewContainer: "ul",
emptyView: LoadingView,
initialize: function() {
this.collection = new Collection()
return this.collection.fetch()
}
})
})
//item
define(["marionette", "text!app/templates/events/item.html"], function(Marionette, Template) {
"use strict";
return Backbone.Marionette.ItemView.extend({
template: Template,
tagName: "li"
})
})
Hm ja naprawdę podoba Ci się to rozwiązanie, ale nie sądzę collectionEvents: { 'żądanie' jest prawidłowa. Synchronizacja zostanie wywołana, ale żądanie nie. – azz0r
Prawdopodobnie można to naprawić, wywołując metodę "POBIERZ" PO renderowaniu widoku. Na przykład: 'view = new View(); $ ("body"). append (view.render(). el); view.collection.fetch() '. – gbsice
To wydaje się trochę nieporządne, włączając w to bezpośrednią manipulację domem i wszystko, co jest – azz0r