Angularjs - 将依赖项注入多个控制器

时间:2014-12-03 12:57:46

标签: angularjs dependency-injection

我仍然很有角度,并且一直在构建一个简单的CRM应用程序。对于单个资源(restful API资源),我在angular应用程序中定义了3-4个路由和控制器。现在,有一组服务和模块,我不得不重复注入每个控制器。我知道每个控制器都有它自己的范围实例和工厂/服务的共享实例,但有没有办法集中定义多个控制器的依赖关系?

在下面的示例中,$modalgrowlconfiguration$scope被注入所有3个控制器,我只想定义一次。

列出控制器

myApp.controller('VenueListCtrl', ['$scope', '$http', 'configuration', '$modal', 'growl',
  function ($scope, $http, configuration, $modal, growl) {
  }
]);

创建/新控制器

myApp.controller('VenueCreateCtrl', ['$scope', '$http', '$location', 'configuration',
  function ($scope, $http, $location, configuration) {
  }
]);

详情控制器

myApp.controller('VenueDetailCtrl', ['$scope', '$routeParams', '$http', '$modal', 'configuration',
  function ($scope, $routeParams, $http, $modal, configuration) {
  }
]);

1 个答案:

答案 0 :(得分:0)

您可以做的最好是:使用控制器的非-anonimus函数声明:

var depsToInject = ['$scope', 'growl', 'configuration', '$modal'];

myApp.controller('Ctrl1' , Ctrl1);

Ctrl1.$inject = depsToInject ;

function Ctrl1($scope, growl, configuration, $modal) {
    ....
}

myApp.controller('Ctrl2' , Ctrl2);

Ctrl2.$inject = depsToInject ;

function Ctrl1($scope, growl, configuration, $modal) {
    ....
}

等。但这并没有完全统一宣言,我不认为有更好的方法。但是你可以从另一边尝试并用另一个依赖包装你的依赖,但我也不喜欢这样。