Ich benutze Backbone Marionetten CollectionView. Ich versuche anzugeben, dass die Sammlung geladen wird, also verwende ich die leere Ansicht, um einen Loader anzuzeigen.Backbone Marionette: Verwenden von emptyView zum Laden
Dies ist jedoch schlechte Logik, weil Sammlungen manchmal leer sind, und daher wird es zu einem defekten Loader.
Ich habe versucht, dieses Skript verwenden, aber es hat nicht funktioniert: https://github.com/surevine/marionette-loadingview-plugin
Hat jemand eine bessere Lösung? Heres meines aktueller Code:
//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 Ich mag diese Lösung wirklich, aber ich denke nicht, daß Collection: { 'request' korrekt ist. Die Synchronisierung wird aufgerufen, die Anforderung jedoch nicht. – azz0r
Sie können das wahrscheinlich beheben, indem Sie nach dem Rendern der Ansicht die Methode 'fetch' aufrufen. Zum Beispiel: 'view = new View(); $ ('body'). append (view.render(). el); view.collection.fetch() '. – gbsice
Das scheint irgendwie unordentlich, direkte Manipulation Dom und alle – azz0r