2017-07-27 57 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。您可以讀取/寫入並隨時訪問它

相關問題