In backbone.js müssen Sie die Wurzel jedes Modells manuell setzen. Gibt es eine Möglichkeit, dies einmal an einem einzigen Ort einzurichten, und alle Modelle werden es verwenden?
Für z. api.site.com
wird der REST-Dienst sein, aber zu Testzwecken kann es sich um localhost:1000
handeln. Ich muss in der Lage sein, die Wurzel-URL des Dienstes einfach zu ändern und sie nicht überall in den vielen vorhandenen Modellen zu haben die Anwendung.
Nicht sicher, was genau Sie meinen, indem Sie urlRoot
für jedes Modell manuell setzen.
Vermutlich machst du
richtig? Dann hat jede Modellinstanz natürlich dieselbe urlRoot
. Eine andere Modellinstanz von zB MyOtherModel
hätte eine andere urlRoot
.
Wenn Sie aus irgendeinem Grund dieselbe urlRoot
verwenden müssen, würde ich vermuten, dass die Modelle Attribute gemeinsam nutzen. Dies sollte Hinweise auf Vererbung oder Erweiterung geben, damit Sie Folgendes tun können:
Ich habe mit der elegantesten Art und Weise gespielt, dies zu tun, wenn ich Backbone mit AMD (require.js) verwende. Das ist es, was ich mir ausgedacht habe, und wie das beste [bisher].
Zuerst laden Sie die Daten wie beschrieben hier .
index.htm (Eingangspunkt für Anwendungen)
%Vor%Definieren Sie als Nächstes eine Basisklasse für Backbone-Modelle wie folgt:
js / models / Base.js (beachten Sie, dass dieser Modulname mit dem Modulnamen in der obigen Konfiguration übereinstimmt)
%Vor%Erweitern Sie abschließend alle Backbone-Modelle von dieser Basis wie folgt:
js / models / User.js
%Vor%Dies ist tangential mit einer früheren Frage verbunden, die ich hatte bezüglich Backbone und Require.JS.
Weiterführende Literatur: Ссылка
Was ich verstehe, ist:
Sie haben mehrere Modelle: model1 und model2
Die Stamm-URL kann entweder http://api.site.com
oder http://localhost:8080
sein, abhängig davon, ob Sie lokal oder extern arbeiten. Und irgendwann könnte es http://api.anothersite.com
Ich würde dann so etwas tun:
%Vor%Aber sei vorsichtig damit, vielleicht vergisst du, beim Commit von einer URL auf die andere zu wechseln. Besser ist es, relative Pfade zu behandeln, wenn sie angewendet werden.
Meiner Meinung nach ist dies am besten, indem Sie die Backbone.sync
-Methode überschreiben und Ihre Root-URL dort voranstellen. Dies liegt daran, dass es nicht Aufgabe des Modells ist, die API-Domäne zu kennen.
Und dann können Sie Ihre Modelle so erstellen, wie Sie es normalerweise tun würden:
%Vor% Ich verwende diese Methode, um eine .json
Erweiterung an alle URLs anzuhängen, um zu verhindern, dass JSON durch den Browser-Cache blinkt.
Starten Sie einfach Ihre URL von '/' . Somit sind Sie weder auf localhost noch auf echte Domains angewiesen.
Das ist wirklich ein alter Post, aber ich denke, dass meine Version für jemanden nützlich sein kann. Ich benutze Backbone mit require.js und meine Server-Seite und Client-Seite komplett getrennt. Ich gebe zu wissen, für die Client-App, wo ist API-Root zur gleichen Zeit, wenn ich requirejs Skript erklären:
%Vor%und dann gehe ich in mein Backbone-Modul:
%Vor%Das ist der eleganteste Weg, den ich finden konnte.
Tags und Links backbone.js