在$ rootScope中存储用户数据 - 好还是坏?

时间:2017-07-27 00:57:22

标签: javascript angularjs

我正在构建一个Angularjs应用程序,它需要在几个不同的模块(用户配置文件,喜欢帖子,评论)中访问登录用户的信息。我知道如果需要在Angularjs应用程序的不同部分之间共享某些数据,则最好使用servicefactory。但是$ rootScope怎么样呢?

.run(function($rootScope, userService) {
  userService.getLoggedInUser()
    .then(function(user){
      $rootScope.loggedInUser = user; // Contains username, joined date, photo URL, etc.
    })
})

如果我需要应用程序任何部分的用户信息,我只需从根目录中获取

<div >Username: {{ $root.loggedInUser.username }} </div>
...
alert($rootScope.username());

这会以任何负面方式暴露应用程序吗?我没有介绍任何敏感信息,如密码或电子邮件,但也许我忽略了一些显而易见的事情。

感谢任何输入!

2 个答案:

答案 0 :(得分:3)

作为一般规则,您不希望将数据存储在$rootScope上,就像您不希望在全局范围内的Javascript中存储变量一样。

将数据存储在服务中的优点是,您可以封装数据,通过服务的唯一API使其可用,服务可以操作它 - 它知道如何从服务器检索数据,或者如何将更改存储回服务器。

在任何情况下,它还可能取决于您的应用程序的大小和purpouse。如果它是一个小型学校项目或个人网站,从长远来看它不会对你造成伤害,你现在可以节省时间$rootScope

答案 1 :(得分:1)

您可以使用sessionStorage。您可以对其进行读/写并即时访问