gpt4 book ai didi

angularjs - AngularJS 中是否提供自动依赖注入(inject)?

转载 作者:行者123 更新时间:2023-12-03 08:01:49 24 4
gpt4 key购买 nike

我想自动将 Angular 内置服务依赖注入(inject)到 Angular 模块/应用程序中的所有服务中。

我要注入(inject)的服务是... $exceptionHandler

不想 $exceptionHandler 是全局的......例如我 不想去做 ...

window.$exceptionHandler = $exceptionHandler

但我也有 不想使用 ... 手动将 $exceptionHandler 依赖注入(inject)到每个服务中
angular.module('myApp').factory('myService', ['$exceptionHandler', function ($exceptionHandler) {

是否可以将 Angular 内置服务自动注入(inject)到 Angular 模块/应用程序中的所有服务中?

非常感谢

最佳答案

通过嵌套模块可以更方便。在根(或全局)模块中注入(inject) $exceptionHandler 和您创建或想要使用的所有其他模块。根模块的所有子模块将毫不费力地注入(inject) $exceptionHandler。但是,您仍然必须在 Controller 和工厂函数定义中命名 $exceptionHandler,因此不可能完全摆脱注入(inject)伪影。

例子:

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:

主页.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 放入 Controller 的函数参数中,但模块本身不需要注入(inject),因为它继承了父模块 app.home 和 app 的所有注入(inject)。

通过在 AngularJS 应用程序中使用模块的层次结构,可以在适当的地方进行注入(inject)……对于整个应用程序、模块组或仅在单个模块上更全局。另外,我们为应用程序的部分提供了一个非常干净的结构。

关于angularjs - AngularJS 中是否提供自动依赖注入(inject)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com