是否可以在控制器或配置块中定义angularjs常量?

是否可以在控制器或配置块中定义angularjs常量?,angularjs,constants,Angularjs,Constants,我正在尝试从http端点设置一些应用程序范围的常量。我不想(或需要)通过手动引导方式(ala)实现。理想情况下,我希望在用户登录后加载常量。所以我假设我需要在某个可以运行一些代码(并使用$http)的地方定义常量。但是,每当我在控制器或配置块中定义一个常量时,当我将其传递到另一个模块时,该常量就会给出一个未知的提供程序错误。一旦我将定义移出控制器,它就会工作。例如,如果我有 var app = angular.module('testApp',[]); app.constant(

我正在尝试从http端点设置一些应用程序范围的常量。我不想(或需要)通过手动引导方式(ala)实现。理想情况下,我希望在用户登录后加载常量。所以我假设我需要在某个可以运行一些代码(并使用$http)的地方定义常量。但是,每当我在控制器或配置块中定义一个常量时,当我将其传递到另一个模块时,该常量就会给出一个未知的提供程序错误。一旦我将定义移出控制器,它就会工作。例如,如果我有

  var app = angular.module('testApp',[]);
      app.constant('test', 'test value');
然后我可以像这样将其传递到另一个模块的控制器:

  var app2 = angular.module('anotherModule',[testApp]);
  app2.controller('TestCtrl', ['test',
    function(test) {
        console.log(test)`
    }..
这将输出您所期望的“测试值”。但是如果常量是在代码块中定义的,那么它似乎没有注册为提供程序。例如:

  var app = angular.module('testApp',[]);
      app.controller('firstCtrl',function(){
               app.constant('test', 'test value');
      }
如果我使用该控制器运行一个页面,该常量似乎已注册(从某种意义上说,它列在testApp模块上的_invokeQueue数组中),但injector服务没有该常量的提供程序,我在另一个模块上为其获得了未知的提供程序方法


我最初觉得工厂或服务对我所做的事情来说是过分的,但也许这是我应该走的路。但我也很想理解为什么这样定义的常量是不可注入的。

为HTML5应用加载常量的最简单方法:

  • 将以下行添加到标题部分: