在角度

时间:2016-11-09 16:50:00

标签: javascript angularjs session-storage

我对AngularJS很新,我尝试尽可能清洁地实现一个小型的Ionic App。

我的应用程序包含一个登录控制器,用于将记录的用户存储在$ rootScope中,但我已经读过使用$ rootScope不是在控制器之间共享变量的好方法。

所以我想使用sessionStorage和localStorage,但我想知道它的最佳实践是什么:

  • 我的ServiceLogin服务是否应直接在存储中写入或将数据发送到控制器,而控制器成为唯一可以在存储中写入的人?

  • 可以/应该在{{}}标记之间的html中直接使用sessionStorage变量吗?

2 个答案:

答案 0 :(得分:2)

嗯,答案是取决于...... 这取决于你的项目的规模和范围以及" tidy"你想要使用你的代码。一个简单的测试项目仅用于实验,与具有大量移动部件的大型LOB应用程序不同。

无论如何,要成为"有棱角的"你应该采取你所说的第一条路径,即制作一项服务,将数据保存到localStorage并将其注入并在需要此功能的控制器/组件上调用它。有一些编程的模块也有回退到cookie存储或其他,但我发现这根本不是必需的,因为本地/会话存储在主要浏览器,甚至移动浏览器上被支持很长时间。请参阅this

阅读你的第二个选项只会让我的眼睛刺痛......并且无法工作(从{{}}内部调用window.getItem(...)),至少在他们发布1.6版本之前他们已经删除了解析器的沙箱。无论如何,这是一个不好的做法,你应该避免它。

答案 1 :(得分:0)

嗯,我认为您的服务在存储中写入没有问题。至于直接在HTML中使用存储变量,我认为最好将存储变量分配给控制器的$scope变量,因为$scope是暴露给视图的变量。

要操纵浏览器的存储空间,ngStorage是您最好的选择。