1

为什么我被迫在将使用它的函数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(...)and时module('app').provider(...),代码不会立即执行,但是当 Angular 应用程序被引导时,这就是 Angular 以正确的顺序执行不同代码的作用(即代码provider然后代码config)。

谢谢

ps1:这个问题我已经看过了,其实是一样的,但是答案更多的是建议或者猜测……

ps2:我仍在使用 Angular 1.2,也许 Angular 1.3 - 1.4 改变了?

4

1 回答 1

0

我已经在几个 Angular 版本上进行了测试,它似乎是 1.2.x 版本中的一个“错误”。从 1.3.0 版本开始,定义 和 的顺序provider并不config重要。

测试代码:

angular.module('myApp',[])
  .provider('testService', function() {
    console.log('.. service');
    this.$get = function () {
      return {};
    };
  })
  .config(function(testServiceProvider) {
    console.log('.. config');
  });
于 2015-12-08T13:23:02.890 回答