2012-06-29 11 views
7

コントローラとテンプレートの両方にアクセスできるisLoggedIn()関数が必要です(ng-show = "isLoggedIn()"のような処理を行うためにテンプレートが必要です)。これを行う最善の方法は何ですか?どのコントローラやテンプレートでもアクセスできるAngularJSのisLoggedIn関数を作成する最も良い方法は?

答えがサービスの場合、テンプレート内からサービスにアクセスすることは可能ですか、または各コントローラがテンプレート($ scope内)を表示するためのラッパー関数を作成する必要がありますか?

答えて

5

私は通常、本体タグに「MainCtrl」があり、それにグローバルなものを入れています。

<body ng-controller="MainCtrl"> 
    ... 
</body> 

function MainCtrl($scope, authService) { 
    $scope.isLoggedIn = function() { 
    return authService.isLoggedIn(); 
    } 
} 

次に、他のスコープはすべてisLoggedIn関数を継承します。

isLoggedInを$ rootScopeに配置することもできますが、私はこのようにしています。

+0

ああ、私はコントローラーがそのようなサブコントローラーを持つことができなかったことを認識しませんでした。それはうまく動作します。他の誰かが違うベストプラクティスなどを持ってきた場合は、1日か2日間質問を開いたままにしておきます。 –

+0

同じです。私はサブコントローラについて知らなかった。ありがとう、これは私が把握しようとしてきたいくつかのものをクリーンアップするのに役立ちました。 – Jeff

関連する問題