提供商

Provider 在配置阶段和运行阶段均可用。

Provider 配方在语法上定义为实现 $get 方法的自定义类型。

只有在要为应用程序范围的配置公开 API 时才应使用 Provider 配方,该 API 必须在应用程序启动之前进行。这通常只适用于可重用服务,其行为可能需要在应用程序之间略有不同。

angular.module('app',[])
  .provider('endpointProvider', function() {
    var uri = 'n/a';
    
    this.set = function(value) {
      uri = value;
    };

    this.$get = function() {
      return {
        get: function() {
          return uri;
        }
      };
    };
  })
  .config(function(endpointProviderProvider) {
    endpointProviderProvider.set('http://some.rest.endpoint');
  })   
  .controller('MainCtrl', function(endpointProvider) {
    var vm = this;
    vm.endpoint = endpointProvider.get();
  }); 
<body ng-controller="MainCtrl as vm">
  <div>endpoint = {{::vm.endpoint }}</div>
</body>

endpoint = http://some.rest.endpoint

没有 config 阶段的结果将是

endpoint = n / a