我正在使用reusable library
创建angular
。该库基本上与使用此库的用户提供的service
相关联,并根据它进行一些工作。
例如:我们的库中定义了一个名为Login
的服务,其中传递了User
服务,我们检查用户是否已登录。
.factory('Login', ['User',
function(User) {
return {
checkLogin: function() {
//PAGE NOT FOUND ERROR..
if (User.authenticated) {
return true;
}
else{
return false;
}
}
}; //Return
}
])
我传递的User
服务名称未修复可能有不同的名称,如Employee
或Customer
,它取决于用户,因为此服务由下载的用户定义这个库,但无论服务名称如何,它都具有相同的功能。
因此,我需要一些方法将我给定的正式服务名称参数映射到用户提供的实际服务名称参数。
例如:有些用户下载了这个库,他已经使用User
的名称定义了Employee
服务,然后给出了我的正式服务名称参数User
通过某些地图功能映射到提供的实际服务名称。
function map(){
// maps Employee service ==> User service
/*
I want this map function to be something this we use in case of a variable like.
var x = function(){return 1;}
var y;
y = x;
Now y contains the instance of x
Is something like this possible in case of services? Since services are passed as dependency injection at runtime.
}
答案 0 :(得分:3)
似乎所有你需要的是动态注入,这是可能的:
app.factory('Login', ['$injector', function($injector) {
var service;
function initService(name) {
service = $injector.get(name);
}
...
然后你照常使用它。