2017-07-27 4 views
1

私はいくつかの異なるモジュール(ユーザープロファイル、投稿を好き、コメントする)内のログインユーザーの情報にアクセスする必要がある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

なぜローカルストレージですか? –

+0

@JeremyJacksonこの時点で特別な理由はありません。なぜグローバルストレージはありませんか? –

+3

機密データを保存しないので、問題はありません。また、@ JeremyJackson氏によると、ローカルストレージを使ってそのようなデータを保存することができます。 – KKK

答えて

3

一般的に、グローバルスコープのJavascriptに変数を保存しないのと同じ方法で、データを$rootScopeに保存することは望ましくありません。

データをサービスに格納する利点は、データをカプセル化し、サービスの一意のAPIを通じて利用可能にし、サービスがそれを操作できることです。サーバーからデータを取得する方法や、変更をサーバーに保存し直します。

いずれにしても、アプリケーションのサイズと目的によって異なる場合があります。小規模な学校のプロジェクトや個人のウェブサイトであれば、長期的にはあなたを傷つけることはなく、$rootScopeに時間を節約することができます。

1

代わりにsessionStorageを使用できます。あなたはそれを読み書きすることができ、即座にアクセスすることができます

関連する問題