2016-09-28 9 views
0

私は長い複雑な認証チェーンを介して人をログインさせるMicrosoftのadal.js for angularを使用していますが、ログインプロセスが完了したときにadalを使用すると、 :角型変数はコントローラではなく、ビューでのみ利用可能

<p> 
    {{userInfo.userName}} 
</p> 

これは機能しますが、わかりません。

私はコントローラの中で$scopeを使用したい場合、私はそれを特に注入しなければなりません。そうでなければ、コントローラには利用できません。

$scopeはコントローラに注入されていません。

コントローラーに$scopeが注入されていないと、ビューはどのようにして$scope変数を保持しましたか?

ありがとうございました。

EDITED FOR CLARITY。私は今質問がより意味をなさないことを願っています。

+0

'$ scope 'は、コントローラにデータを供給するために' ng-model'ディレクティブを使用する必要があるため、ビューに表示され、コントローラに表示されます。EDIT:リンクを削除しました – Baruch

+0

あなたは混乱しています。コントローラには常にスコープが作成されます。コントローラが使用するかどうかは問題ではありません。すべての角度式は常にスコープで評価されます。 controllerAsを使用する場合、コントローラ自体は選択した名前でスコープに格納されます。 –

+0

私はおそらく混乱していますが、コントローラに '$ scope 'を特に注入すると' $ scope.userInfo'しか得られません。それ以外の場合は '$スコープは定義されていません '。 – crowhill

答えて

0

adal.jsライブラリがrootScope上でuserInfoオブジェクトを管理しているようです。残念ながら、これは、コントローラにアクセスするには、コントローラにアクセスするためにスコープ($ scopeまたは$ rootScope)をコントローラに注入する必要があることを意味します。

ビューは常にスコープ上のオブジェクトにアクセスできます。ビューが何かにアクセスできるようにするには、ビューのスコープにアタッチする必要があります。私は角の開発者が{{ $scope.userInfo.userName }}の代わりに上記の制限のために構文{{ userInfo.userName }}を作ったと推測しています。 $ rootScopeを注入し、必要なものにアクセスするためのメソッドを提供します。

+0

に接続されたオブジェクトです。私はその答えに感謝します。 – crowhill

+0

"ビューは常に有効で、スコープ上のオブジェクトにのみアクセスできます。" これについて詳しく説明するドキュメントへのリンクがありますか? – crowhill

+0

これは私がAngularのプログラミングからしばらく学んだことです。私はいくつかの公式の文書を見つけることができるかどうかを見てみましょう –

関連する問題