提供商

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