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

时间:2014-04-22 18:30:36

标签: javascript angularjs events dependency-injection

我已经创建了一个需要监听$route个事件的服务。我设置了$rootScope.$on()的听众。我的服务如下:

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

它工作正常,但我必须在我的应用程序中的某个地方至少注入一次此服务的实例,以便侦听器自行附加。

有没有办法强制创建实例而不将其注入某个地方?

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

谢谢。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

如果您不需要该服务,而是需要在应用程序启动时运行的某些代码,那么您应该将其放入运行块中:

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