我有一个服务列表(让我们称之为“处理程序”)和一个管理员(也是一个服务)。 我希望所有处理程序都将自己“注册”给经理。 我的问题是没有人注入这些处理程序,因此它们没有被实例化,因此注册它们的代码没有被调用。如何在不注入的情况下实例化处理程序?
我不想直接向管理员注入处理程序,因为在这种情况下,注册会给它更多的灵活性并使其更通用。
代码非常简单:
理:
angular.module("MyMain").factory('OperationsManager', function () {
var handlers = [];
function OperationsManager() { };
OperationsManager.prototype.registerHandler = function (handler) {
handlers.push(handler);
};
return new OperationsManager();
});
})(angular);
HANDLER:
(function (angular) {
angular.module("MyMain").factory('MyHandler', function (OperationsManager) {
var Handler = {};
Handler.prototype.someFunction = function(){
};
OperationsManager.registerHandler(Handler);
return Handler;
});
})(angular);
答案 0 :(得分:0)
创建一个注入OperationsManager
的服务怎么样?然后,您可以将处理程序作为参数传递,并将它们注册到OperationsManager
。
yourApp.service('nameHere', ['OperationsManager',
function(OperationsManager) {
this.registerHandler = function(handler) {
OperationsManager.register(handler);
}
}
])
即使这意味着您必须在某处注入此服务。必须注入一些东西。此时,您可以直接在OperationsManager
中注册/取消注册。为什么不能在注入.registerHandler
的任何地方拨打OperationsManager
?