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
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.
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>
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.
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
Mówiąc bardziej szczegółowo, ngStorage zadba o aspekty serializacji, co może zaoszczędzić czas. –
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.
var setLocalStorage = function (token, uname)
{
$localStorage.token = token;
$localStorage.name = uname;
}
$timeout(setLocalStorage(token, userForm.uname), 500);
Moduł używany: ngStorage
To działa!
Byłeś bardzo czysty, dziękuję bardzo! – panagulis72
Nie ma problemu, proszę pana! – sebenalern