【问题标题】:How to call services dynamically in AngularJS如何在AngularJS中动态调用服务
【发布时间】:2016-06-02 19:43:38
【问题描述】:

我有 20 种不同的服务(工厂)。每个服务在执行操作时执行一个规则。 基于 ruleCode 我想调用一个特定的服务。 我正在做的是,我有另一个名为 ActionHandler 的服务,它包含一个基于它调用特定服务的 CASE 的 SWITCH 语句。为此,我在 ActionHandler Service 中注入了所有 20 个服务。

我认为这不是最佳做法

谁能建议我解决此类问题的最佳方法。

提前致谢::

angular.forEach(List, function (elem) {
        switch (elem.ruleCode){
            case 'a':{
              callAService();
                break;
            }
            case 'b':{
                callBService();
                break;
            }
            //similarly others case
        }
    })

【问题讨论】:

    标签: angularjs service factory


    【解决方案1】:

    我认为有几种方法。首先想到的是(可能有点老套):

    如果elem.ruleCode 和服务名称匹配,您可以使用$injector 根据服务名称获取服务。就像是: $injector.get(elem.ruleCode + 'RuleService').foo()。当然,这要求您的所有服务都有一个名为 foo() 的方法。

    例如,如果您的 elem.ruleCode 可以具有值 a 或 b,那么您将拥有 2 个服务: aRuleServicebRuleService,每个都有一个方法foo()

    【讨论】:

      猜你喜欢
      • 2010-11-18
      • 2015-07-12
      • 2019-05-08
      • 1970-01-01
      • 1970-01-01
      • 2020-10-12
      • 1970-01-01
      • 2014-12-31
      • 1970-01-01
      相关资源
      最近更新 更多