Übergeben von Daten zwischen Seiten in AngularJS + Seitenaktualisierung

8

Ich versuche, beim Kaufvorgang einer App Daten zwischen den Seiten zu übermitteln, aber es funktioniert nicht so, wie es sollte. Ich habe etwas gelesen und die meisten Leute empfehlen, einen Dienst zu verwenden, aber das einzige Problem ist, dass wenn die Seite aktualisiert wird (Benutzer klickt auf Aktualisieren oder zu einem späteren Zeitpunkt zurückkommt) alle Daten vom Dienst verschwinden. Dies ist sinnvoll, da die Daten in einem Service nicht dauerhaft sein sollen, sondern ein Problem verursachen.

Die Frage ist also: Wie kann ich Daten zwischen Seiten in angularJS übergeben und trotzdem die Daten behalten, die nach einer Seitenaktualisierung übergeben wurden?

Hier ist mein Code soweit (mit meinem Versuch, Abfragezeichenfolgen zu verwenden):

%Vor%     
Rob 17.09.2014, 22:04
quelle

2 Antworten

14

Dafür gibt es mehrere Möglichkeiten,

  1. Für kleinere Datensätze können Sie den $ cookieStore für Daten verwenden, die unter 4k
  2. Eine weitere Option, insbesondere bei großen Datenmengen, wäre die Verwendung von Lokalem Speicher und dann das Abrufen der Daten Laden / Laden der Seite
  3. Wenn es sich nur um eine sehr kleine Datenmenge oder um Daten handelt, die über mehrere Seiten hinweg verwendet werden, können Sie $ rootscope verwenden, aber dies ist nicht die beste Option, da es den globalen Namensraum verschmutzt.
  4. Die letzte Option, je nachdem, wie die Daten abgerufen werden, könnte ein Service sein, der im Prinzip ein Singleton ist das kann zu verschiedenen Winkelbereich übergeben werden.

Hinweis: Nur die ersten beiden sind persistent.

In Ihrem Fall denke ich, dass die Verwendung von local storage oder cookiestore die besten Optionen sind. Sie versuchen, einen Dienst zu verwenden, der geeignet wäre, wenn Sie nicht möchten, dass er dauerhaft ist (die Seite verlässt oder eine Seite aktualisiert). Services sind Singletons, die von eckigen verwaltet werden, wenn Sie injiziert werden, erhalten Sie bei jeder Injektion eine Referenz auf das gleiche Objekt. Beim Zurückkehren zur Seite muss dieser Singleton neu initialisiert werden, wodurch alle vorherigen Daten verloren gehen. Die einzige Möglichkeit, einen Dienst persistent zu machen, besteht darin, die Daten von einer anderen Datenbank aus einer Datenbank, einer lokalen Datei oder von noSQL zu laden. Ich glaube jedoch nicht, dass Sie das wirklich wollen.

Wenn Sie daran interessiert sind, die lokale Speicherimplementierung zu verfolgen, dann schauen Sie sich diese Module angular-local-storage an. ngStorage oder dieses answer

Wenn Sie den Cookiestore in dieser Antwort

    
Jared Reeves 18.09.2014, 02:21
quelle
0

Sie können Session / LocalStorage verwenden. Oder ein Browser db wie pounchdb. Season-Speicher: Sitzungsdaten speichern; LocalStorage: speichert Daten nicht nur im Sitzungsumfang pounchdb: Offline-db

    
ABOS 17.09.2014 22:10
quelle

Tags und Links