2016-09-03 4 views
2

私は角度jに新しい蜂です。私はコーディングで$ scopeを使用しています。しかし、scopeのようにグローバル変数を使ってangularJsのドキュメントを検索したが、根の範囲の詳細がわかっていることがわかった。 誰でも私にrootscopeとスコープの主な違いを理解する助けになりますか?いつ使用する?そして、それはどのように内部的に動作しますか?angleJopeのrootScopeとscopeの主な違いは何ですか?それは内部的にどのように働くのですか

+1

[$ scopeと$ rootScopeの違い](http://stackoverflow.com/questions/22785775/difference-between-scope-and-rootscope)の可能な複製 –

答えて

0

$ scopeはグローバル変数ではなく、特定のモジュール内で使用され、コントローラ間で利用可能ですが、$ rootscopeはモジュール全体のグローバル変数と似ていますが、さらに複数の$ scopeを持つことができますが、アプリケーション$ rootscopeはglobla変数に使用され、$ scopeはモジュール内のローカル変数に使用されます。

1

スコープの範囲はhierarchyです。

各角度アプリケーションは、正確に1つのルートスコープを持ちますが、 複数の子スコープを持つことがあります。

一部のディレクティブ が新しい子スコープを作成するため、複数のスコープを持つことができます(ディレクティブのドキュメントを参照して、新しいスコープを作成する の指示を参照してください)。新しいスコープが作成されると、親スコープの子として が追加されます。これにより、添付されているDOMと平行するツリー構造 が作成されます。それは、このプロパティの範囲になります

{{name}} 

:あなたが何かを持っている

。そのようなプロパティが見つからない場合は、 のスコープに達するまで親スコープを検索します。 JavaScriptでは、この動作はプロトタイプ 継承と呼ばれ、子スコープはプロトタイプ的には 親から継承します。

内側の最も広い範囲{{name}}は、ng-repeatのプロパティに解決されます。 GreetCtrlスコープでは、このコントローラで定義されたプロパティに解決されます。このコントローラがプロパティを定義しておらず、$ rootScopeで定義されている場合、$ rootScopeの値が表示されます。

Scope heirachy

ので、$rootScopeは根、グローバルまたは最上位の親スコープです:

すべてのアプリケーションは、単一のルートスコープを持っています。他のすべてのスコープは、 のルートスコープの子孫スコープです。スコープは、 のモデルを監視するためのメカニズムを介して、 モデルとビューの分離を提供します。

スコープの仕組みについては、docsを参照してください。

関連する問題