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 回答