我正在构建一个Angularjs应用程序,它需要在几个不同的模块(用户配置文件,喜欢帖子,评论)中访问登录用户的信息。我知道如果需要在Angularjs应用程序的不同部分之间共享某些数据,则最好使用service
或factory
。但是$ 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 :(得分:3)
作为一般规则,您不希望将数据存储在$rootScope
上,就像您不希望在全局范围内的Javascript中存储变量一样。
将数据存储在服务中的优点是,您可以封装数据,通过服务的唯一API使其可用,服务可以操作它 - 它知道如何从服务器检索数据,或者如何将更改存储回服务器。
在任何情况下,它还可能取决于您的应用程序的大小和purpouse。如果它是一个小型学校项目或个人网站,从长远来看它不会对你造成伤害,你现在可以节省时间$rootScope
。
答案 1 :(得分:1)
您可以使用sessionStorage。您可以对其进行读/写并即时访问