2017-07-27 67 views
1

我正在构建一个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()); 

去取这是否暴露出任何负面的应用程序?我没有引入任何敏感信息,如密码或电子邮件,但也许我忽略了一些明显的东西。

任何输入赞赏!

+0

为什么不能本地存储? –

+0

@JeremyJackson在这一点上没有特别的理由。为什么不全球存储? –

+3

这不会是一个问题,因为你不存储你的敏感数据。正如@JeremyJackson所说的,您可以使用本地存储来存储这些数据。 – KKK

回答

3

作为一般规则,您不希望将数据存储在$rootScope上,方法与您不希望在全局范围内使用Javascript存储变量的方式相同。

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

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

1

您可以改用sessionStorage。您可以读取/写入并随时访问它

相关问题