AngularJS:将依赖项注入每个控制器

时间:2018-09-10 13:45:07

标签: angularjs dependency-injection

假设我有一个带有许多控制器的大型Web应用程序(使用AngularJS)。有没有办法在每个控制器中注入$log服务?更清楚地说,我想写这样的东西:

.config(function($log) {
    allMyControllers.inject($log);
})

代替

.controller('Controller1', function($log) {...})
.controller('Controller2', function($log) {...})
.controller('Controller3', function($log) {...})
.controller('Controller4', function($log) {...})

1 个答案:

答案 0 :(得分:1)

您可能要做的是,创建一个具有所有必需依赖项的控制器,并将其作为基本控制器,其他控制器可以使用角度extend API对其进行扩展。

我遇到的一些清晰的示例代码:

.controller('baseController', function(someService) {
this.someService = someService;
})

.controller('extendedController', function($scope, $controller) {
  angular.extend(this, $controller('baseController', { $scope: $scope }));

  this.alert = this.someService.alert;

})

.service('someService', function() {

  this.alert = function() {
    window.alert('alert some service');
  };
});

以上代码的有效解决方案可以在here中找到。