在AngularJS中自动创建服务实例(无延迟加载)

Auto-create service instance in AngularJS (no lazy-load)

本文关键字:实例 延迟加载 服务 创建 AngularJS      更新时间:2023-09-26

我创建了一个需要侦听$route事件的服务。我正在为听众设置$rootScope.$on()。我的服务是这样的:

application.factory('myListener', ['$rootScope', function ($rootScope) {
    $rootScope.$on('$routeChangeStart', myListener.onChangeStart);
    return {
        onChangeStart: function() {
            // Do something.
        }
    };
}]);

它工作正常,但我必须在应用程序中的某个地方至少注入一次该服务的实例,以便侦听器能够连接自己。

有没有一种方法可以强制创建实例而不在某个地方注入它?

也许你可以推荐一种更好的方式来构建这项服务?

谢谢。

angular.injector().get('myListener');应该为您提供服务的实例。

如果你不需要服务,而是需要一些在应用程序启动时运行的代码,那么你应该把它放在一个运行块中:

application.run(['$rootScope', function($rootScope) {
    $rootScope.$on('$routeChangeStart', function() {
        // Do something.
    });
}]);