我想自动依赖注入一个Angular内置服务到Angular模块/ app中的所有服务.
我要注入的服务是… $exceptionHandler
我不希望$exceptionHandler成为全局…例如我不想做 …
window.$exceptionHandler = $exceptionHandler
但我也不希望依赖注入$exceptionHandler手动使用…
angular.module('myApp').factory('myService',['$exceptionHandler',function ($exceptionHandler) {
是否可以自动将Angular内置服务注入Angular模块/应用程序中的所有服务?
非常感谢
解决方法
通过嵌套模块可以使它更方便.在根(或全局)模块中,注入$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.home和app的所有注入.
通过在AngularJS应用程序中使用模块层次结构,可以在适当的位置进行注入…对于整个应用程序,模块组或仅在单个模块上更全局.此外,我们为App的部分提供了一个非常干净的结构.