我希望自动依赖将Angular内置服务注入Angular模块/ app中的所有服务。
我要注入的服务是... $ exceptionHandler
我不希望 $ exceptionHandler为全局...例如我不希望做...
window.$exceptionHandler = $exceptionHandler
但我也不希望依赖性地将$ exceptionHandler注入到每个服务中使用...
angular.module('myApp').factory('myService', ['$exceptionHandler', function ($exceptionHandler) {
是否可以自动将Angular内置服务注入Angular模块/应用程序中的所有服务?
非常感谢
答案 0 :(得分:3)
通过嵌套模块可以更方便。在根(或全局)模块中,注入$ exceptionHandler以及您创建或想要使用的所有其他模块。根模块的所有子模块都会有$ exceptionHandler注入而不会更加轻松。但是,您仍然必须在控制器和工厂函数定义中命名$ exceptionHandler,因此不可能完全摆脱注入伪影。
示例:
<强> app.js 强>
angular.module('app', ['ionic', '$exceptionHandler', 'ngCordova','app.home',
'app.impressum'])
.run(function ($ionicPlatform, $state) {
..
})
.config(function ($stateProvider, $urlRouterProvider, $provide, $exceptionHandler, $ionicConfigProvider, $compileProvider) {
$stateProvider
.state('app', {
...
})
}
);
现在app.home-Module:
<强> home.js 强>
angular.module('app.home', ['app.home.controller', 'app.home.factory']);
主/ controller.js 强>
angular.module('app.home.controller', [])
.controller('homeController', function ($scope, $exceptionHandler) {
...
});
app.home.factory 和 app.impressum 的三个模块非常相似,所以我把它留给你。
正如您所看到的,您仍然需要将$ exceptionHandler放入控制器的函数参数中,但模块本身不需要注入,因为它继承了它的父模块 app的所有注入。主页和应用。
通过在AngularJS应用程序中使用模块层次结构,可以在适当的位置进行注入...对于整个应用程序,对于模块组或仅在单个模块上进行更全局。此外,我们为App的部分提供了一个非常干净的结构。