Da ich bereits am Backbone gearbeitet habe und jetzt lerne ich eckig. Ich mochte die Art und Weise, wie eckig Funktionen bietet. Ich habe gerade darüber nachgedacht, wie wir den HTTP-Interceptor im Backbone implementieren können, um Spinner und Toaster anzuzeigen, während JavaScript mit AJAX Daten zum/vom Back-End speichert oder abruft. Und schließlich habe ich einen Weg gefunden, es zu tun. Dachte daran, es zu teilen. Hoffe es hilft euch allen.Wie schreibe ich http Interceptor in Backbone
0
A
Antwort
0
Ich gehe davon aus Sie requireJS verwenden, wenn nicht nur die AMD konvertieren
define("vent", ["backbone", "backbone.marionette"], function(backbone) {
return new backbone.Wreqr.EventAggregator
});
define("backbone-sync", ["backbone", "underscore", "vent"], function(backbone, underscore, vent) {
var xhrArray = [];
var abortAllPendingXhrs = function() {
underscore.invoke(xhrArray, "abort"),
xhrArray = []
};
// here options can contain the text which you want to show on spinner and toaster
var showSpinnerandToaster = function(method, options) {
if("create" === method || "update" === method || "patch" === method) {
//show saving spinner
}
if("read" === method) {
//show fetching spinner
}
//using once here because none of this will be called twice
//'sync' event is fired on the model/collection when ajax gets succeeded
this.once("sync", function() {
//hide the spinner and show success toaster
//remove cancelRequest since now on you can not abort the AJAX
delete this.cancelRequest;
//remove error callback since it will not be called now
this.off("error");
});
//'error' event is fired on the model/collection when ajax fails
this.once("error", function(model, xhr) {
//show error toaster if the xhr.statusText !== "abort"
//remove cancelRequest since now on you can not abort the AJAX
delete this.cancelRequest;
//remove sync callback since it will not be called now
this.off("sync");
});
};
vent.on("abortAllPendingXhrs", abortAllPendingXhrs);
backbone.Model.prototype.sync = backbone.Collection.prototype.sync = function(method, model, options) {
var proxiedShowSpinnerandToaster = underscore.bind(showSpinnerandToaster, this);
proxiedShowSpinnerandToaster(method, options)
var xhr = backbone.sync.apply(this, arguments);
xhrArray.push(xhr);
xhrArray = underscore.reject(xhrArray, function(xhr) {
//remove all xhrs which are completed since we can not abort them
return 4 === xhr.readyState
}),
this.cancelRequest = function(){
//invoke cancelRequest on model if you want to abort the AJAX call
xhr.abort();
}
return xhr;
}
});
Verwandte Themen
- 1. Wie sende ich vom http Interceptor aus?
- 2. Kann ich den HTTP-Antwortstatus in einem $ http Interceptor ändern?
- 3. HTTP Interceptor in Angular 2
- 4. Breeze mit eckigen $ http Interceptor
- 5. Angular 2 HTTP-Antwort-Interceptor
- 6. Implementieren Sie http Interceptor in angular.js
- 7. $ Fenster in http Interceptor Service verwenden
- 8. Wie schreibe ich Middleware für grpc (node.js)
- 9. Wie schreibe ich einen einfachen benutzerdefinierten HTTP-Server in Go?
- 10. Wie schreibe ich einen HTTP-Server in Perl?
- 11. HTTP-Basisauthentifizierung über CXF-Interceptor funktioniert nicht
- 12. HTTP Messzeit jeder Anfrage mit Interceptor
- 13. Wiederholen fehlgeschlagene Anfragen mit $ http Interceptor
- 14. Capture HTTP 401 mit Angular.js Interceptor
- 15. Angular HTTP Interceptor trifft nicht auf Fehlerfunktionen
- 16. $ location.path nicht von http-Interceptor arbeitet
- 17. Wie angularjs Interceptor für eine HTTP-Anfrage zu überspringen?
- 18. Flowtype - Wie schreibe ich eine Deklaration für Klassenfactorys wie Backbone-Modelle?
- 19. Wie schaffe ich manuell ein angular $ HTTP-Anfragen in einem Interceptor
- 20. Wie kann ich den HTTP-Antwortstatuscode in einem Spring Interceptor überprüfen?
- 21. Wie programmiere ich einen EJB Interceptor?
- 22. Interceptor-Methode nicht mit Interceptor-Bindung
- 23. Wie schreibe ich in Emacs?
- 24. Wie schreibe ich in Uint8ClampedArray?
- 25. Wie schreibe ich in ContactStore.Contact.Phones?
- 26. Wie schreibe ich weniger RewriteRules?
- 27. Wie bekomme ich die Hibernate-Sitzung in einen Hibernate Interceptor?
- 28. Interceptor in Node.js
- 29. Wie schreibe ich KeyBindings
- 30. Wie schreibe ich Suchklasse?
Hallo Nikhil IIFE, Abgesehen von diesem Posting hier, ich denke, es wäre gut, die SO-Dokumentation Backbone.js hier zu aktualisieren - http: //StackOverflow.com/documentation/backbone.js/topics –
@ DavidR sicher ich werde es tun. –
Danke Nikhil! :-) –