如何在AngularJS中动态调用服务
我有20种不同的服务(工厂)。每个服务在执行操作时执行一条规则。 根据规则代码,我想调用一个特定的服务。 我要做的是,我有另一个名为ActionHandler的服务,它包含一个基于调用特定服务的情况的SWITCH语句。为此,我在ActionHandler服务中注入了所有20个服务 我认为这不是最好的做法 谁能告诉我解决这类问题的最佳方法 提前感谢::如何在AngularJS中动态调用服务,angularjs,service,factory,Angularjs,Service,Factory,我有20种不同的服务(工厂)。每个服务在执行操作时执行一条规则。 根据规则代码,我想调用一个特定的服务。 我要做的是,我有另一个名为ActionHandler的服务,它包含一个基于调用特定服务的情况的SWITCH语句。为此,我在ActionHandler服务中注入了所有20个服务 我认为这不是最好的做法 谁能告诉我解决这类问题的最佳方法 提前感谢:: angular.forEach(List, function (elem) { switch (elem.ruleCode){
angular.forEach(List, function (elem) {
switch (elem.ruleCode){
case 'a':{
callAService();
break;
}
case 'b':{
callBService();
break;
}
//similarly others case
}
})
我认为有几种方法。首先想到的是(可能有点老套): 如果
elem.ruleCode
与服务名称匹配,则可以使用$injector
根据服务名称获取服务。比如:
$injector.get(elem.ruleCode+'RuleService').foo()
。当然,这需要您的所有服务都有一个名为foo()
的方法
例如,如果您的elem.ruleCode
可以具有值a或b,则您将拥有2个服务:
aRuleService
和bRuleService
,每个都有一个方法foo()
我认为有几种方法。首先想到的是(可能有点老套):
如果elem.ruleCode
与服务名称匹配,则可以使用$injector
根据服务名称获取服务。比如:
$injector.get(elem.ruleCode+'RuleService').foo()
。当然,这需要您的所有服务都有一个名为foo()
的方法
例如,如果您的elem.ruleCode
可以具有值a或b,则您将拥有2个服务:
aRuleService
和bRuleService
,每个都有一个方法foo()