为什么我被迫在使用它的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而改变了吗?
答案 0 :(得分:0)
我已经测试了几个Angular版本,它似乎是1.2.x版本中的“bug”。从1.3.0版本开始,provider
和config
的定义顺序并不重要。
-->
KO -->
确定 -->
确定 测试代码:
angular.module('myApp',[])
.provider('testService', function() {
console.log('.. service');
this.$get = function () {
return {};
};
})
.config(function(testServiceProvider) {
console.log('.. config');
});