私は AngularJS を使い始めたばかりなので、専門家ではありません。
HTML ビューの右側の領域を表す div があります。そのdivにはコントローラーがあります。
<div class="rightContainer" ng-controller="rightContainerCtrl">...</div>
その div 内にはテーブル、検索領域などがあります。その div 内の各領域には独自のコントローラーがあり、次のようになります。
<div class="rightContainer" ng-controller="rightContainerCtrl">
...
<div class="search" ng-controller="searchCtrl">...</div>
...
<div class="table" ng-controller="tableCtrl">...</div>
</div>
たとえば、検索領域には独自のコントローラーがあり、親 (rightContainerCtrl) の一部のコンテンツを変更する必要があるため、rightContainerCtrl の子ですが、rightContainer div は成長しており、大きくなり、いくつかのネストされたコントローラーが含まれています。
このネストされたコントローラーを使用することは、このコンテキストでは悪いと思います。ネストされたコントローラーはすべて親スコープを共有し、すべてのコントローラーがすべての親スコープ変数にアクセスする必要があるわけではなく、すべてのコントローラーが rightContainerCtrl の「囚人」であるため、それらは親コントローラーと高度に結合されています。
これは神のオブジェクトのアンチパターン (この場合は神のコントローラー) のように見えるので、ネストされたコントローラーを使用する代わりに、コードをリファクタリングして rightContainerCtrl コントローラーを削除し、代わりにサービスを使用できると思います (ファサード デザイン パターンのように)。そのサービスは、スコープ変数を共有する代わりにコントローラーによって使用されます。
しかし、私はAngularJsの専門家ではないので、私が正しいかどうか、またはこの親コントローラーを離れた方がよいかどうかはわかりません。おそらく何かが足りないので、私の質問は
ネストされたコントローラー (ネストされたスコープ) を使用する方が良いのはいつですか? angularjs で代わりにサービスを使用する方が良いのはいつですか?