Wie starte ich eine Sammlung in Backbone.js nur mit Javascript

8

Kontext: Ich erstelle eine Anwendung, die mehrere große Sammlungen von Referenzdaten für den Betrieb benötigt. Ich beschränke mich nur auf HTML und Javascript (einschließlich JSON).

Frage : Wie starte ich eine Sammlung in Backbone.js, in der sich die Sammlungsobjekte im JSON-Format auf dem Server befinden und ich nur Javascript verwende?

Das weiß ich schon:

  • Backbone.js-Bootstrapping-Best Practices erfordern Rails oder eine andere serverseitige Sprache ( Ссылка ).
  • Die meisten Javascript-E / A-Vorgänge sind asynchron, z. B. das Laden von JSON vom Server.
  • Die Verwendung von fetch () zum Bootstrap von Daten wird in Backbone.js als Anti-Pattern betrachtet. fetch () ist auch eine asynchrone Operation.

Das ist, was ich bisher herausgefunden habe:

%Vor%

'dqApp' ist mein Anwendungsobjekt. Ich kann einen Spinner anzeigen und den Status eines Ladevorgangs aktualisieren, während Sammlungen gefüllt werden, indem Warnungen an das Anwendungsobjekt gesendet werden.

    
Mr The Falcon 14.06.2012, 16:01
quelle

3 Antworten

5

Dies könnte Ihnen helfen: Ссылка

    
Justin wong 14.06.2012 16:10
quelle
1

Die Funktion fetch akzeptiert einen Optionsparameter, der einen success -Rückruf haben kann:

%Vor%     
Snowball 19.10.2012 20:43
quelle
0

Eine mögliche Lösung besteht darin, Ihre Ansicht vom Status von fetch abhängig zu machen, sodass sie erst instanziiert wird, wenn das Laden des Modells / der Sammlung abgeschlossen ist.

Denken Sie daran, dies ist ein Backbone-Anti-Pattern. Wenn Sie die Ansicht von Ihrer Sammlung / Ihrem Modell abhängig machen, führt dies wahrscheinlich zu Verzögerungen bei der Benutzeroberfläche. Aus diesem Grund empfehlen wir Ihnen, Ihre Daten zu laden, indem Sie den json direkt in Ihre Seite einfügen.

Dies löst jedoch nicht Ihre Situation, in der Sie Daten in einer serverlosen Situation hochladen müssen. Es ist einfach, json-Daten dynamisch in Ihre Seite mit ein paar Zeilen Ruby / PHP / etc einzubetten, aber wenn Sie nur / arbeiten, ist die Ansicht vom Modell abhängig geh.

Wenn Sie die Sammlung mit fetch() laden, können Sie Folgendes verwenden:

%Vor%

Meine bevorzugte Methode ist die Verwendung von ajax (z. B. .getJSON , .ajax ) und das Speichern des zurückgegebenen jqXHR-Objekts (oder XMLHTTPRequest, wenn Sie nicht jQuery verwenden) für eine Eigenschaft in Ihrem Modell. Auf diese Weise haben Sie eine genauere Kontrolle und können die verzögerte Objekt -Antwort verwenden, um nach dem Status zu suchen des Anrufs, bevor Sie Ihre Ansicht erstellen.

%Vor%     
Gui Ambros 08.06.2015 08:28
quelle