角度的最佳做法是在多个模块中重复使用功能?

时间:2014-10-29 06:54:07

标签: angularjs

我有一个模块配置功能,我想在几个模块中使用它。我这样帮助过我,但我想,在angular.js中可能有更好的方法吗?

(function() {
  angular.module("myApp", ["moduleA", "moduleB"]);
  angular.module("myApp").subModuleConfig = function(module) {
    return function() {
      console.log("Config Module " + module)
    }
  }
}());

(function() {
  angular.module("moduleA", [])
    .config([angular.module("myApp").subModuleConfig("A")]);
}());

(function() {
  angular.module("moduleB", [])
    .config([angular.module("myApp").subModuleConfig("B")]);
}());

这是一个傻瓜:http://plnkr.co/edit/4LzLPgnF87WCbL3LeCIR?p=preview

1 个答案:

答案 0 :(得分:1)

您可以创建一个新模块进行配置。

你只能注入提供者和常量进行配置,而不是让subModuleConfig成为工厂,你可以将它作为提供者,只需将this.$get设置为你的配置功能(虽然可能更加丑陋)。

使用工厂,您可以将多个不同的配置设置到同一工厂中。

  (function() {
    angular.module("myApp", ["moduleA", "moduleB"]);

    angular.module("configModule", []).factory("subModuleConfig", function() {
      return function(module) {
        console.log("Config Module " + module)
      }
    });
  }());

  (function() {
    angular.module("moduleA", ["configModule"])
      .config(["subModuleConfigProvider", function(subModuleConfigProvider) {
        var subModuleConfig = subModuleConfigProvider.$get();
        return subModuleConfig("A");
      }]);
  }());

  (function() {
    angular.module("moduleB", ["configModule"])
      .config(["subModuleConfigProvider", function(subModuleConfigProvider) {
        var subModuleConfig = subModuleConfigProvider.$get();
        return subModuleConfig("B");
      }]);

  }());