Angularjs 在不注入的情况下初始化服务(角度)

Angularjs 在不注入的情况下初始化服务(角度),angularjs,Angularjs,我有一个服务列表(让我们称之为“处理程序”)和一个经理(这也是一个服务)。 我希望所有处理程序都向经理“注册”。 我的问题是没有人注入这些处理程序,所以它们没有被实例化,所以注册它们的代码没有被调用。我如何在不注入处理程序的情况下实例化它 我不想直接将处理程序注入到管理器中,因为在这种情况下,注册赋予了它更大的灵活性,使它更通用 代码非常简单: 经理: angular.module("MyMain").factory('OperationsManager', function () {

我有一个服务列表(让我们称之为“处理程序”)和一个经理(这也是一个服务)。 我希望所有处理程序都向经理“注册”。 我的问题是没有人注入这些处理程序,所以它们没有被实例化,所以注册它们的代码没有被调用。我如何在不注入处理程序的情况下实例化它

我不想直接将处理程序注入到管理器中,因为在这种情况下,注册赋予了它更大的灵活性,使它更通用

代码非常简单:

经理:

    angular.module("MyMain").factory('OperationsManager', function () {

        var handlers = [];

        function OperationsManager() { };

        OperationsManager.prototype.registerHandler = function (handler) {
            handlers.push(handler);
        };

        return new OperationsManager();

    });
})(angular);
(function (angular) {
    angular.module("MyMain").factory('MyHandler', function (OperationsManager) {

        var Handler = {};
        Handler.prototype.someFunction = function(){

        };


        OperationsManager.registerHandler(Handler);

        return Handler;

    });
})(angular);
处理程序:

    angular.module("MyMain").factory('OperationsManager', function () {

        var handlers = [];

        function OperationsManager() { };

        OperationsManager.prototype.registerHandler = function (handler) {
            handlers.push(handler);
        };

        return new OperationsManager();

    });
})(angular);
(function (angular) {
    angular.module("MyMain").factory('MyHandler', function (OperationsManager) {

        var Handler = {};
        Handler.prototype.someFunction = function(){

        };


        OperationsManager.registerHandler(Handler);

        return Handler;

    });
})(angular);

创建一个插入
OperationsManager
的服务怎么样?然后,您可以将处理程序作为参数传递,它将负责将它们注册到
OperationsManager

 yourApp.service('nameHere', ['OperationsManager',
     function(OperationsManager) {

         this.registerHandler = function(handler) {
              OperationsManager.register(handler);
         }
     }
 ])
即使这意味着您必须在某个地方注入此服务。必须注射一些东西。此时,您可以直接在
OperationsManager
中注册/注销。为什么不能在插入
OperationsManager
的任何位置调用
.registerHandler