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

时间:2015-07-22 00:44:56

标签: angularjs constants

我正在尝试从http端点设置一些应用程序范围的常量。我不希望(或需要)通过手动引导方式(ala this)来完成它。理想情况下,我想在用户登录后加载常量。所以我假设我需要在某处定义常量,我可以运行一些代码(并使用$ 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)`
    }..

这将输出'test value',如你所料。但是如果在代码块中定义了常量,那么它似乎不会注册为提供者。所以,例如:

  var app = angular.module('testApp',[]);
      app.controller('firstCtrl',function(){
               app.constant('test', 'test value');
      }

如果我运行一个带有该控制器的页面,该常量似乎是注册的(从某种意义上说它列在testApp模块上的_invokeQueue数组中)但是注入器服务没有提供者,我得到了一个另一个模块上的未知提供程序方法。

我最初觉得工厂或服务对我想做的事情来说太过分了,但也许这就是我应该去的方式。但我也很想理解为什么像这样定义的常数不能注射。

1 个答案:

答案 0 :(得分:0)

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

  1. 将以下行添加到head部分: < script src =" service / constants.js">

  2. 使用签名" service / constants.js"

  3. 创建web api / wcf / java REST服务方法
  4. 在该方法中返回" window.constants = {...}"。

  5. 替换" ..."使用实际密钥:从数据库中读取的值对。