angularjs Ionische und globale Variablen: Best Practice, um eine Variable global verfügbar zu machen

8

Ich bin neu in Angular / Ionic. Bevor ich Angular / Ionic nutzte, überprüfte ich beim Start meiner App, ob wir unter Phonegap oder einem Browser waren, der diese Informationen in einer globalen booleschen Variablen benutzte und dann abtastete, ob die App online oder offline war und sie in einem globalen speicherte Variable auch, wie folgt:

%Vor%

Nun möchte ich das gleiche mit Angular / Ionic machen, ich verstehe, dass ich einen "Service" verwenden muss. Aber ist es der beste Weg, diese Informationen über den gesamten Code verfügbar zu machen?

Ich mache folgendes, aber ist es das "beste Verfahren"?

in index.html:

%Vor%

in services.js:

%Vor%

in app.js:

%Vor%

Das funktioniert jetzt, aber ich brauche den booleschen isPhoneGap überall dort, wo ich ihn brauche (fast überall in meiner App).

Können Sie die Best Practice anwenden, um dies zu tun?

Danke

    
Louis 23.11.2014, 21:03
quelle

3 Antworten

10

Sie sollten keine Variablen mit $rootScope setzen und versuchen, $scope so weit wie möglich zu vermeiden. Die Verwendung von LocalStorage ist in Ordnung, aber diese Daten bleiben bestehen. Ich würde empfehlen, eine Factory zum Speichern und Abrufen von Variablen mit SessionStorage einzurichten. SessionStorage ist an die geöffnete Registerkarte gebunden, daher sind die Daten beim Schließen geschlossen.

Dies ist einer meiner Sitzungsspeicherdienste. Ich werfe $cookieStorage , falls der lokale Speicher nicht verfügbar ist. Außerdem kann localStorage nur Zeichenfolgen speichern. Aus diesem Grund werden Sie Objekte und Arrays nach Bedarf von und nach JSON konvertieren. Nach dem Eingeben von sessionService muss ich nur sessionService.store(name, data) aufrufen, um eine Sitzungsvariable zu speichern, oder sessionService.persist(name, data) , um persistente Daten zu speichern, d. H. UserName, wenn "Remember Me" angekreuzt ist. :

%Vor%

$ cookieStore ist Teil von ngCookies. Stellen Sie sicher, dass angular-cookies.js enthalten sind und laden Sie ngCookies wie jedes andere Modul. Angular ngCookies

    
Owen 24.11.2014, 14:46
quelle
3

Zunächst einmal bin ich ziemlich neu bei Ionic und Angular, aber ich hatte das gleiche Problem mit meiner Web App Angular und ich habe folgendes getan, um es zum Laufen zu bringen.

  1. weist $rootScope Variablen zu, so dass es für alle Controller sichtbar ist

  2. weist $scope Variablen zu, die für den aktuellen Kontext sichtbar sind. Ex: Controller und die HTML-Seiten verwenden diesen Controller

  3. localStorageService , da dies die Werte enthält, selbst nachdem der Benutzer die Seite aktualisiert hat.

Bitte beachten Sie, dies ist, was ich in meiner Angular Web App gemacht habe und vielleicht nicht die Best Practices, aber ich hoffe, Sie haben die Idee.

    
sameera207 24.11.2014 14:12
quelle
0

Es gibt Methoden in ionic.Platform, die Ihnen dabei helfen, die Daten zurückzubekommen, die Sie in Bezug auf den Gerätetyp benötigen.

Ссылка

Sie könnten alternativ auch ngCordova hinzufügen, die eine Reihe nützlicher Wrapper für Cordova-Plugins enthält, einschließlich des Geräte-Plugins.

Ссылка

    
shaunix 23.11.2014 21:21
quelle

Tags und Links