angularjs - 为什么必须在配置 block 之前定义提供程序

标签 angularjs angularjs-module

我有一个模块。它有一个配置 block 、一个提供者和一个定义的常量。 config block 引用常量和提供者。我注意到我的常量可以在我的配置 block 之前或之后定义。但是,必须在配置 block 之前定义提供程序,否则我会收到错误消息。

Error: [$injector:modulerr] Failed to instantiate module loadOrder due to:
[$injector:unpr] Unknown provider: greetingsProvider

这是一些示例代码:
var myModule = angular.module('loadOrder', []);

//if I define this after the config block, I get an error
angular.module('loadOrder').provider('greetings',[ function(){
    this.$get = [function(){
        return { greet: function(){ return "Hola"; } };
    }];
}]);

myModule.config(['$provide', 'greetingsProvider', 'planetName', function($provide, loadOrderProvider, planetName){
    $provide.value('someVals',[3,6,8]);
    console.log("Lets go to", planetName);
}]);

myModule.constant('planetName', 'Saturn');

为什么是这样?为什么我不能在我的配置 block 之后定义我的提供者?

最佳答案

当您调用 provider , configconstant什么都不会立即发生。调用在应用程序初始化期间被注册、放入队列并运行。
constant 的有趣之处是它被放在队列的前面。因此它在 config 之前可用,无论如何。

关于angularjs - 为什么必须在配置 block 之前定义提供程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23118619/

相关文章:

javascript - 在另一个工厂 AngularJS 中使用一个工厂

css - 在不破坏 CSS 的情况下使用基于 Bootstrap 的 AngularJS 库

javascript - Angular Flot - 通过 Alpha 传递十六进制颜色在 Google Chrome 中不起作用

javascript - Angularjs 未捕获错误 : [$injector:unpr]

javascript - 将子模块注入(inject)主模块

javascript - 如何处理 AngularJS 配置 block 错误

javascript - 在 Angular JS 中垂直对齐单选按钮

javascript - 无法访问 AngularJs Controller 内的代码

javascript - 如何将数据插入另一个数组中的数组

javascript - AngularJS:目录结构(例如模块化编程)会影响加载时间吗?