gpt4 book ai didi

angularjs - 初始化非注入(inject) angular.service

转载 作者:行者123 更新时间:2023-12-04 06:48:03 25 4
gpt4 key购买 nike

我有一个 angular.service ,它在其构造函数中监听 $rootscope 上的事件。

该服务不会在应用程序的任何地方注入(inject),因此它不会被初始化。
为了解决这个问题,我们只是注入(inject)它而不是在另一个服务中使用它,只是为了让它“更新”。

是否有某种方法可以初始化服务而不必将其注入(inject)其他服务/ Controller /指令中?

最佳答案

一般来说,Angular 会给你 module.run(fn) API 进行初始化。 fn参数是完全可注入(inject)的,所以如果你有一个服务,例如myService , 这暴露了 init()方法,您可以将其初始化为:

angular.module(...).run(['myService', function(myService) {
myService.init();
}]);

如果服务初始化代码放在服务构造函数中,即:
angular.module(...).service(function() {
...initialization code...
});

...那么在您的 run() 中声明对服务的依赖就足够了方法,即:
angular.module(...).run(['myService', function() {
// nothing else needed; the `myService` constructor, containing the
// initialization code, will already have run at this point
}]);

实际上,您可以将其缩写为:
angular.module(...).run(['myService', angular.noop]);

(旁注:我觉得这种模式有点尴尬;如果服务只包含初始化代码,只需直接在 run() 函数中实现初始化代码。无论如何,您都可以将多个 run() 函数附加到每个模块。)

关于angularjs - 初始化非注入(inject) angular.service ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28343558/

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