2012-11-30 1 views
16

私はAngularJSアプリケーションの中で一番上の要素(文書)の範囲を返す共有関数を持っています。

function topScope() { 
    return angular.element(document).scope(); 
} 

これは、常に動作し、私は常に(それがコントローラまたはディレクティブの内側にあるかどうか)、アプリケーション内にある任意のサブスコープへのアクセス権を持つことが保証されています。今、私は$ rootScopeも同じように動作することに気付きました

topScope().$emit('pageReady'); 

は、ここで私はそれを使用するものの一例です。

$rootScope.$emit('pageReady'); 

これも同じ効果を達成し、達成します。しかし、$ rootScopeは "$ scope from the shelf"スコープ(作成されたスコープはすべてそのメソッドとプロパティを継承します)として設計されているので、実際にはページの最上位スコープであることを意味しますか?したがって、ドキュメントノードに添付されたスコープオブジェクトの親ですか?

+0

はい、RootScopeはすべてのスコープの親です。 – ganaraj

答えて

23

$rootScopeは、特定のAngularJSアプリケーションのすべてのスコープの親スコープです。 1つのページに複数のAngularJSアプリケーションをブートストラップすることが可能であるため(手動でのみ、これはng-appを使用して行うことはできません)、複数の$rootScopeインスタンスを1つのHTMLドキュメントに含めることもできます。

$rootScopeは、のように、ngAppが宣言された要素またはangular.bootstrapに渡された要素のいずれかに「接続」されています。

簡潔に言えば、$rootScopeは1つのAngularJSアプリケーションのすべてのスコープのルートですが、特定のHTMLドキュメントの他のすべてのスコープの親スコープとなる「スーパールート」スコープはありません。

$rootScopeを使用している場合は、HTMLドキュメント全体にAngularJSアプリケーションが1つしかない場合は、問題ありません。

+7

これは正しいです。あなたが2つのアプリケーションを持っていて、お互いに話す必要があるので2つの$ rootScopesを持っているなら、$ windowを使うことができます...端のように見えますが、言及する価値があります。 –

関連する問題