为angularjs控制器注入通用提供程序

时间:2013-07-04 08:31:31

标签: angularjs angularjs-scope

我的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会自动注入所有控制器。但我不知道该怎么做。有人知道吗?感谢。

1 个答案:

答案 0 :(得分:1)

我不认为使用相同的依赖项喷涂所有控制器是一个好主意。它表明应用程序没有一个好的结构,你应该解决这个问题。

举个例子,有一些事情很突出。您无需依赖$scope$rootScope,您可以使用$scope

$scope.$root获取根范围

如果您在服务中包装逻辑并在控制器之间重用代码,那么我建议您的控制器不需要依赖$ http,而是将此代码移动到您所依赖的服务中。尝试并恰当地命名这些服务,以便您可以告诉他们的工作。例如,更喜欢AccountCreator而不是像AccountsService这样更通用的东西。事实上,从来没有命名xxxService某个服务后缀是一个真正没有任何意义的方式。

就你的实际问题而言,不,我认为没有办法解决这个问题。我有一些关于你如何破解它的想法,但我认为潘多拉盒子应该被锁定。