我正在尝试从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数组中)但是注入器服务没有提供者,我得到了一个另一个模块上的未知提供程序方法。
我最初觉得工厂或服务对我想做的事情来说太过分了,但也许这就是我应该去的方式。但我也很想理解为什么像这样定义的常数不能注射。
答案 0 :(得分:0)
为HTML5应用加载常量的最简单方法:
将以下行添加到head部分: < script src =" service / constants.js">
使用签名" service / constants.js"
在该方法中返回" window.constants = {...}"。
替换" ..."使用实际密钥:从数据库中读取的值对。