AngularJSには、角度のDocsで述べたように、DOMベースのコントローラ継承があります。AngularJSコントローラの継承
<div ng-controller="BaseController">
<p>Base Controller Value: {{value}}</p>
<button ng-click="updateValue()">Update In Base</button>
<div ng-controller="DerivedController">
<p>Derived Controller Value: {{value}}</p>
<button ng-click="updateValue()">Update In Derived</button>
</div>
</div>
scope変数 "value"は、BaseControllerにのみ存在します。これに基づいて、BaseControllerまたはDerivedControllerのメソッドで値を変更しながら、両方の値を更新する必要があります。しかし、個々のスコープ変数だけが更新されます。
は、ここで同じ例を実証フィドルです:http://jsfiddle.net/6df6S/1/レベルでの変化は、直接の子と現在のスコープの直接の親に伝播させることができ、どのよう
。
我々は
$スコープを使用してこれを実装することができます。$
を見てか、そのようなウォッチャーを使用せずにこれを行うにはどのような方法がありますか?
編集1:
$スコープを使用することでは$ここで見て、私は、私は価値がこのようなメカニズムを使用せずにすべてのスコープ間で更新になるだろうする方法を模索していた
$scope.$watch("value", function() {
$scope.$broadcast("childChangeListener"); //Downwards to all children scopes
$scope.$emit("parentChangeListener"); //Upwards to all parent scopes
});
を意味したものです。
$ rootScope –
を使用してください。$ rootScopeにプロパティとメソッドを入れずに$ scopeを共有する方法はありますか? –
$ rootScopeは使用しないでください。コントローラ間でデータを共有する代わりにサービスを使用してください(私の答えを参照)。 –