2017-09-12 3 views
0

私はnavbar(ui-viewを持っている)を備えたメインコントローラを持っています。また、私はログインを処理するコントローラを持っています。ログイン後、ユーザーの情報を取得して$ scope/$ rootScopeに入れます。コントローラからNavbarにデータを入力するにはどうすればいいですか?

「Welcome、[nickname]!」のようなものを置くためにnavbarにこれらの変数はありません。

+1

「ニックネーム」を表示しようとするコードを入力してください。 – Zooly

答えて

0

ナビゲーションバーデータを含むサービスを追加します。両方のコントローラにサービスを注入します。 navbarコントローラで、サービスのデータをnavbarビューにバインドします。ログイン後、サービスを呼び出してデータを追加します。

あなたはおそらくプログラムの他の部分にユーザーのデータが必要なので、サービスに「userProfile」という名前を付けると意味があります。

angular.module('app').factory('userProfile', function() { 
    return {}; 
}); 

angular.module('app').controller('NavBarCtrl', function(userProfile) { 

    var ctrl = this; 
    ctrl.userProfile = userProfile; 

}); 

<!-- NavBar.html --> 
<span class="welcome">Welcome, {{$ctrl.userProfile.nickname}}</span> 

angular.module('app').controller('LoginCtrl', function(userProfile) { 
    //Do Login stuff 
    .then(function(profileData) { 
     userProfile.nickname = profileData.nickname; 
    }); 
}); 
+0

ありがとう、実際には意味があります。しかし、サービスはajax/$ http呼び出しを処理するか、または単にデータを処理することになっていますか? – v0idifier

+0

あなたはそれをどちらかの方法で構築できます。私はHTTPリクエストを別々にし、 'userProfile'をダムデータにすることをお勧めします。 –

+0

さて、ログインコントローラや他のサービスのHTTPリクエストはありますか? – v0idifier

関連する問題