Ich probiere Backbone.js aus und versuche unter anderem, eine Remote-API aufzurufen. Daher muss ich Backbone.sync überschreiben können, da ich die Dokumentation verstehe .
In der Dokumentation selbst gibt es kein Beispiel dafür, und es scheint keine Google-Gruppe für Backbone zu geben. Kann jemand ein Beispiel dafür nennen?
javascript
backbone.js
Picardo
quelle
quelle
Antworten:
Schauen Sie sich dieses mit Anmerkungen versehene Quellbeispiel an, in dem sie
Backbone.sync
mit einer lokalen Speicheralternative überschrieben werdenbackbone-localStorage
Grundsätzlich sollte Backbone.sync eine Funktion sein, die 4 Argumente akzeptiert:
Sie müssen entweder
options.success
oderoptions.error
je nachdem, ob dermethod
erfolgreich war , feuern . Die Methoden haben das folgende Format:"create"
: erwartet, dass Sie das Modell auf dem Server erstellen"read"
: erwartet, dass Sie dieses Modell vom Server lesen und zurückgeben"update"
: erwartet, dass Sie das Modell auf dem Server mit dem Argument aktualisieren"delete"
: erwartet, dass Sie das Modell vom Server löschen.Sie müssen diese 4 Methoden implementieren und definieren, was Sie für Ihre wollen
"server"
Natürlich sind dies nur die Dinge,
Backbone.sync
die implementiert werden müssen . Sie können mehr implementierenmethods
und mehr Parameter zurückgeben,success
aber es ist am besten, dies nicht zu tun.Stellen Sie am besten sicher, dass es dasselbe
Backbone.sync
tut wie derzeit, damit Sie auf eine Schnittstelle programmieren und nicht auf eine Implementierung. Wenn Sie Ihre Modifikation beispielsweiseBackbone.sync
für die localStorage-Version austauschen möchten, müssen Sie sie nicht selbst erweitern, um sie an Ihre erweiterte Backbone.sync anzupassen. "[Bearbeiten]
Beachten Sie auch, dass Sie mehrere Implementierungen von verwenden können
sync
. Jeder Verweis aufBackbone.sync
ist wirklich,(this.sync || Backbone.sync)
also müssen Sie nur etwas tun wie:Backbone.sync
ist nur die globale Standardeinstellung, die von allen Modellen verwendet wird, es sei denn, für die Modelle ist einesync
bestimmte Methode festgelegt.quelle
(this.sync || Backbone.sync)
Siehe Bearbeiten. Ein weiterer Tipp ist das Lesen der mit Anmerkungen versehenen Quelle des Backbones. Es ist alles da!sync
von einer beliebigen Stelle in Ihrem Code aus aufrufen möchten (normalerweise eine Überlastungsync
), führen Sie einfach eine ausBackbone.sync.call(this, method, this, options)
.Ich weiß, dass diese Antwort etwas zu spät ist und die Antwort von @Raynos großartig ist, aber ich habe es ein bisschen anders gemacht, und vielleicht wäre es nützlich für Sie oder für jede andere Person, die versucht, eine API mit Backbone zu verwenden.
Anstatt Backbone.sync zu überschreiben, habe ich Backbone.ajax überschrieben , da hier die Ajax-Anfrage gestellt wird.
Hier ist ein Beispiel:
quelle
Normalerweise muss ich die Backbone-
sync
Methode überschreiben , wenn ich nur bestimmte Attribute synchronisieren muss. Eine typische Implementierung sieht folgendermaßen aus:quelle
Backbone.sync.apply(this, arguments);
? Es ist etwas flexibler, wenn Sie beispielsweise das Argument "options" in der überschriebenen Version von weglassensync
.Backbone.model.save(attributes, {patch: true})
jetzt