在Angular中,为什么我必须在配置之前声明提供者?

时间:2015-12-08 10:37:35

标签: angularjs angular-providers

为什么我被迫在使用它的provider函数之前声明config

换句话说,这段代码有效:

angular.module('app')
  .provider('testService', function() {
    // ...
  })
  .config(function(testServiceProvider) {
    // ...
  });

但不是这个(得到[$injector:unpr] Unknown provider: testServiceProvider):

angular.module('app')
  .config(function(testServiceProvider) {
    // ...
  })
  .provider('testService', function() {
    // ...
  });

(在我的实际代码中,这两个块是在单独的文件中定义的,因此加载这些文件的顺序非常重要)

我的理解是,当我调用module('app').config(...)module('app').provider(...)时,代码不会立即执行,但是当Angular应用程序被引导时,因此,这是Angular执行不同代码的角色按正确顺序(即provider代码和然后 config代码)。

由于

ps1:我已经看过this question,这是完全相同的,但答案更多的是建议或猜测...

ps2:我还在使用Angular 1.2,可能会因为Angular 1.3 - 1.4而改变了吗?

1 个答案:

答案 0 :(得分:0)

我已经测试了几个Angular版本,它似乎是1.2.x版本中的“bug”。从1.3.0版本开始,providerconfig的定义顺序并不重要。

测试代码:

angular.module('myApp',[])
  .provider('testService', function() {
    console.log('.. service');
    this.$get = function () {
      return {};
    };
  })
  .config(function(testServiceProvider) {
    console.log('.. config');
  });