7

Jaka jest różnica między ngStorage i $ window.localStorage? Kiedy lepiej użyć jednego zamiast drugiego? Muszę wybrać jeden z nich dla aplikacji internetowej. Muszę zapisać dane użytkownika profilu i tokenu

Odpowiedz

5

To normalne html5 lokalnej pamięci:

z pamięci lokalnej, aplikacje internetowe mogą przechowywać dane lokalnie w przeglądarce użytkownika. Przed HTML5 dane aplikacji musiały być przechowywane w plikach cookie, zawarte w każdym żądaniu serwera. Lokalna pamięć jest bezpieczniejsza, a duże ilości danych mogą być przechowywane lokalnie, bez wpływu na wydajność witryny. W przeciwieństwie do plików cookie, limit miejsca jest znacznie większy (co najmniej 5 MB), a informacje nigdy nie są przesyłane na serwer. Lokalna pamięć masowa przypada na źródło (na domenę i protokół). Wszystkie strony z jednego źródła mogą przechowywać i mieć dostęp do tych samych danych.

to daje dostęp do obiektów do składowania - window.localStorage i window.sessionStorage

window.localStorage - przechowuje dane bez daty ważności

window.sessionStorage - przechowuje dane dla jednej sesji , więc dane są tracone, gdy klapka jest zamknięta przeglądarka

Aby pobrać dane zrobiłbyś coś takiego

localStorage.getItem("lastname"); 

Jeśli chcesz zrobić to narożnie, skorzystaj z usługi $ window, ale zachowałbyś się tak, jak w powyższych przykładach.

Source


Aby rozwiązać ngStorage:

moduł angularjs sprawia, że ​​Web Storage pracy w Kątowymi Way. Zawiera dwie usługi: $ localStorage i $ sessionStorage.Nie do czynienia z pobierające i ustawiające jak trzeba w $ obsługę okna

można przekazać $ localStorage lub $ sessionStorage przez odniesienie pod $ zakresie:

$scope.$storage = $localStorage; 

Następnie można użyć $ przechowywania jak i inne kątowe zmienna

<body ng-controller="Ctrl"> 
    <button ng-click="$storage.counter = $storage.counter + 1">{{$storage.counter}}</button> 
</body> 

Source


Jeśli będziesz pracować z angularJS w swojej aplikacji webowej, użyłbym ngStorage, ponieważ będziesz bardziej wygodny i zaznajomiony ze składnią. To tylko moja opinia.

+0

Byłeś bardzo czysty, dziękuję bardzo! – panagulis72

+0

Nie ma problemu, proszę pana! – sebenalern

6

Zmiennazwykle jest globalną zmienną window. Powodem, dla którego Angular zaleca używanie $window jest to, że czasami chciałbyś wyśmiewać lub zamieniać "prawdziwy" obiekt window (na przykład do celów testowych).

powiedział, używając $window.localStorage oznacza, że ​​używasz lokalnego magazynowania waniliowy API, natomiast ngStorage jest

moduł An angularjs sprawia, że ​​Web Storage pracy w Kątowymi Way. Zawiera dwie usługi: $localStorage i $sessionStorage

Źródło here

+2

Mówiąc bardziej szczegółowo, ngStorage zadba o aspekty serializacji, co może zaoszczędzić czas. –

0

Tylko pamiętaj, że wewnętrznie używa zegarka Angular do monitorowania zmian w obiektach $storage/$localStorage, tzn. Wymagany jest cykl skrócania, aby niezawodnie utrwalać nowe wartości w lokalnej pamięci przeglądarki. Zwykle nie stanowi to problemu, ale jeśli przechowujesz wartość w numerze $localStorage i otwierasz nową kartę bez występowania cyklu podsumowania, możesz nie widzieć wartości zapisanych w nowo otwartej karcie/oknie.

Wystąpił ten problem na IE i musiał użyć window.localStorage, aby ominąć to.

0
var setLocalStorage = function (token, uname) 
{ 
$localStorage.token = token; 
$localStorage.name = uname; 

} 
$timeout(setLocalStorage(token, userForm.uname), 500); 

Moduł używany: ngStorage

To działa!