如何提供.config函数来配置我的库

时间:2018-04-19 03:58:12

标签: angularjs angularjs-scope

我为角度js创建了一个小代码库。我在我的库的主模块中创建了一个.config方法,该方法取决于我的moduleConfigProvider。我希望我的库的用户在app.config阶段(在应用程序启动时尽快)调用我的配置提供程序上的.configure。

问题是我的模块中的.config似乎在主app模块的app.config之前运行。我该如何解决这个问题?

e.g。这就是我消耗配置的方式。我需要在.config阶段使用它,因为我需要配置$ httpProvider。

之类的东西
// this module provides initial configuration data for module
angular.module('mymodule')
    .config(['$httpProvider', 'someOptionsProvider', 'myConfigProvider',
        function ($httpProvider, someOptionsProvider, myConfigProvider) {

            console.log("Consuming config now: ", myConfigProvider.config);

        }])

以下是配置提供程序:

angular.module('mymodule.config')
  .provider('myConfig', function() {

        var _this = this;

        _this.configure = configureMethod;
        _this.config = {};

        function configureMethod(configData) {
          _this.config = configData;
            console.log("Config set to:", configData);
        };


        this.$get = function() {
            return _this;
        };

    });

最后这是我的app.config:

angular.module('app')
.config(['myConfigProvider', function(myConfigProvider) {

        console.log("Running App config:", myConfigProvider);

        var config = { a: 1 };

        console.log("Config ready to send:", config);
        myConfigProvider.configure(config);
    }])
;

1 个答案:

答案 0 :(得分:1)

好的,这很简单,只需在提供者函数中使用其他提供程序作为依赖项。

检查以下代码段



details: IDetail[] = [];

angular.module('mymodule', [])

  .provider('myConfig', [
    '$httpProvider',
    function($httpProvider) {

      var _this = this;

      _this.configure = configureMethod;
      _this.config = {};

      function configureMethod(configData) {
        //Do here anything with the $httpProvider
        _this.config = configData;
        console.log("Config set to:", configData);
        console.log('Configuring $httpProvider')
      };


      this.$get = function() {
        return _this;
      };

    }
  ])

angular.module('app', ['mymodule'])
  .config(['myConfigProvider', function(myConfigProvider) {

    console.log("Running App config:");

    var config = {
      a: 1
    };

    console.log("Config ready to send:", config);

    myConfigProvider.configure(config);
  }]);