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