7

ngStorage和$ window.localStorage之间的区别是什么?什么时候使用一个而不是另一个更好? 我必须为其中一个选择一个Web应用程序。我必须保存配置文件用户和令牌的数据

回答

5

这是正常的HTML5本地存储:

具有本地存储,Web应用程序可以在用户的​​浏览器本地存储数据。在HTML5之前,应用程序数据必须存储在cookie中,并包含在每个服务器请求中。本地存储更安全,大量数据可以存储在本地,而不会影响网站性能。与Cookie不同,存储限制要大得多(至少5MB),并且信息永远不会传输到服务器。本地存储是每个来源(每个域和协议)。来自一个来源的所有页面可以存储和访问相同的数据。

它给你的对象访问存储 - 无到期日的数据存储

window.sessionStorage - - window.localStorage和window.sessionStorage

window.localStorage将数据存储在一个会话,所以当浏览器关闭标签

数据丢失要检索的数据,你会做这样的事情

localStorage.getItem("lastname"); 

所以,如果你想在角度上做到这一点,你可以使用$ window服务,但它的行为与上面的例子相同。

Source


为了解决ngStorage:

的AngularJS模块,让网络存储的角度的方式工作。包含两个服务:$ localStorage和$ sessionStorage。没有处理getter和setter一样,你必须在$窗口服务

您可以在$范围按引用传递$的localStorage或$的sessionStorage:

$scope.$storage = $localStorage; 

然后你可以使用$存储作为等角度可变

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

Source


如果您将在web应用程序中使用angularjs,那么我会使用ngStorage,因为您会更加熟悉并熟悉语法。这只是我的看法。

+0

你很清楚,非常感谢你! – panagulis72

+0

没问题,先生! – sebenalern

6

变量$window通常是全局的window变量。 Angular推荐使用$window的原因是因为有时您想要模拟或替换“真实”对象(例如,用于测试目的)。

说这话时,使用$window.localStorage意味着你使用的是本地存储的香草API,而ngStorage是

的AngularJS模块,让网络存储的角度的方式工作。 包含两种服务:$localStorage$sessionStorage

来源here

+2

更明确地说,ngStorage将为您处理序列化方面,这可以节省时间。 –

0

请注意,ngStorage内部使用Angular手表来监视对象对对象的更改,即需要使用摘要循环来将新值可靠地保存到浏览器的本地存储中。通常不是问题,但如果您在$localStorage中存储值并打开一个没有发生摘要循环的新选项卡,则可能无法在新打开的选项卡/窗口中看到存储的值。

在IE上遇到这个问题,不得不使用window.localStorage来解决它。

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

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

模块一起使用:ngStorage

它的工作原理!