0

angularjs コントローラー全体で一般的に使用される一連のプロバイダーがあります。例えば。$scope、$rootScope、$http、および私の顧客サービス。コントローラーでそれぞれを定義せずに、これらの共通プロバイダーをすべてのコントローラーに注入したいと思います

例えば、

それ以外の、

function HomeCtrl($scope, $rootScope, $http){
   .....
}
function MenuCtrl($scope, $rootScope, $http, MyService){
   .....
}

これを行う、

function HomeCtrl(){
   ...
   // $scope, $rootScope, $http are available here
   ...
}
function MenuCtrl(MyService){
   ...
   // $scope, $rootScope, $http are available here
   ...
}

したがって、この例では、$scope、$rootScope、$http がすべてのコントローラーに自動的に挿入されます。しかし、これを行う方法がわかりません。誰も方法を知っていますか?ありがとう。

4

1 に答える 1

1

すべてのコントローラーに同じ依存関係をスプレーするのは良い考えではないと思います。アプリケーションの構造が適切ではないことを示唆しており、おそらくこれに対処する必要があります。

あなたの例を挙げると、際立っていることがいくつかあります。$scopeandに依存する必要はありません$rootScope。ルート スコープは次$scopeを使用して取得できます。$scope.$root

ロジックをサービスにラップし、コントローラー間でコードを再利用している場合は、コントローラーが $http に依存する必要はなく、代わりにこのコードを依存するサービスに移動することをお勧めします。それらのサービスが何をするのかわかるように、適切な名前を付けてみてください。たとえば、AccountCreatorのようなより一般的なものよりも優先しますAccountsService。実際xxxService、サービス接尾辞が実際には何の意味も持たないスロー・ウェイ・ラインであるような名前を付けないでください。

あなたの実際の質問に関しては、いいえ、箱から出してこれを行う方法はないと思います。ハッキングする方法はいくつか思いつきますが、パンドラの箱は施錠したままにしておくべきだと思います。

于 2013-07-04T08:52:29.107 に答える