7

Sự khác nhau giữa ngStorage và $ window.localStorage là gì? Khi nào thì tốt hơn nên sử dụng cái kia thay vì cái kia? Tôi phải chọn một trong số chúng cho một ứng dụng web. Tôi phải lưu dữ liệu của người dùng tiểu sử và mã thông báo

Trả lời

5

này là bình thường html5 lưu trữ địa phương:

Với lưu trữ địa phương, các ứng dụng web có thể lưu trữ dữ liệu cục bộ trong trình duyệt của người dùng. Trước HTML5, dữ liệu ứng dụng phải được lưu trữ trong cookie, được bao gồm trong mọi yêu cầu máy chủ. Bộ nhớ cục bộ an toàn hơn và số lượng lớn dữ liệu có thể được lưu trữ cục bộ mà không ảnh hưởng đến hiệu suất trang web. Không giống như cookie, giới hạn lưu trữ lớn hơn nhiều (ít nhất 5MB) và thông tin không bao giờ được chuyển tới máy chủ. Lưu trữ cục bộ là mỗi gốc (mỗi tên miền và giao thức). Tất cả các trang, từ một nguồn gốc, có thể lưu trữ và truy cập cùng một dữ liệu.

Nó cung cấp cho bạn với các đối tượng để truy cập lưu trữ - window.localStorage và window.sessionStorage

window.localStorage - lưu trữ dữ liệu không có ngày hết hạn

window.sessionStorage - lưu trữ dữ liệu cho một phiên , vì vậy dữ liệu bị mất khi tab trình duyệt được đóng

Để lấy dữ liệu bạn sẽ làm một cái gì đó như thế này

localStorage.getItem("lastname"); 

Vì vậy, nếu bạn muốn làm điều này trong góc, bạn sẽ sử dụng dịch vụ $ window nhưng nó sẽ hoạt động giống như các ví dụ trên.

Source


Để giải quyết ngStorage:

Một module AngularJS mà làm cho lưu trữ web làm việc trong Way góc. Chứa hai dịch vụ: $ localStorage và $ sessionStorage.Không đối phó với getter và setter như bạn có để phục vụ cửa sổ $

Bạn có thể vượt qua $ localStorage hoặc $ sessionStorage bằng cách tham khảo dưới $ phạm vi:

$scope.$storage = $localStorage; 

Sau đó, bạn có thể sử dụng $ lưu trữ như và khác góc biến

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

Source


Nếu bạn sẽ làm việc với angularjs trong webapp của bạn, tôi sẽ sử dụng ngStorage vì bạn sẽ thoải mái hơn và quen thuộc với cú pháp. Đó chỉ là ý kiến ​​của tôi.

+0

Bạn đã rất rõ ràng, cảm ơn bạn rất nhiều! – panagulis72

+0

Không thành vấn đề! – sebenalern

6

Biến số $window thường là biến số toàn cầu window. Lý do mà Angular khuyến cáo sử dụng $window là bởi vì đôi khi bạn muốn giả hoặc thay thế đối tượng "thực" window (ví dụ cho mục đích thử nghiệm).

Nói điều này, sử dụng $window.localStorage có nghĩa là bạn đang sử dụng API vani Storage của địa phương, trong khi ngStorage là

Một AngularJS mô-đun mà làm cho lưu trữ web làm việc trong Way góc. Có hai dịch vụ: $localStorage$sessionStorage

Nguồn here

+2

Rõ ràng hơn, ngStorage sẽ quản lý các khía cạnh tuần tự hóa cho bạn, đây có thể là trình tiết kiệm thời gian. –

0

Chỉ cần lưu ý ngStorage sử dụng đồng hồ góc để theo dõi các thay đổi đối tượng $storage/$localStorage tức là một chu trình phân hủy được yêu cầu duy trì giá trị mới của bạn một cách đáng tin cậy vào bộ nhớ cục bộ của trình duyệt. Thông thường không phải là vấn đề nhưng nếu bạn lưu trữ một giá trị trong $localStorage và mở một tab mới mà không có chu kỳ tiêu hóa xảy ra, bạn có thể không nhìn thấy các giá trị được lưu trữ trong tab/cửa sổ vừa mới mở của bạn.

Đã khắc phục sự cố này trên IE và phải sử dụng window.localStorage để khắc phục sự cố.

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

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

Mô-đun sử dụng: ngStorage

Nó hoạt động!

Các vấn đề liên quan