是否可以在控制器或配置块中定义angularjs常量?
我正在尝试从http端点设置一些应用程序范围的常量。我不想(或需要)通过手动引导方式(ala)实现。理想情况下,我希望在用户登录后加载常量。所以我假设我需要在某个可以运行一些代码(并使用$http)的地方定义常量。但是,每当我在控制器或配置块中定义一个常量时,当我将其传递到另一个模块时,该常量就会给出一个未知的提供程序错误。一旦我将定义移出控制器,它就会工作。例如,如果我有是否可以在控制器或配置块中定义angularjs常量?,angularjs,constants,Angularjs,Constants,我正在尝试从http端点设置一些应用程序范围的常量。我不想(或需要)通过手动引导方式(ala)实现。理想情况下,我希望在用户登录后加载常量。所以我假设我需要在某个可以运行一些代码(并使用$http)的地方定义常量。但是,每当我在控制器或配置块中定义一个常量时,当我将其传递到另一个模块时,该常量就会给出一个未知的提供程序错误。一旦我将定义移出控制器,它就会工作。例如,如果我有 var app = angular.module('testApp',[]); app.constant(
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应用加载常量的最简单方法:
好,我试着用角度的方式来做:)如果我在外面做,我可能会使用我问题中链接的手动引导方法。可以将它声明为对象…然后扩展objectModule。常量是一个角度的概念,似乎非常适合我尝试做的事,但如果我在代码中定义它,我就无法使它成为可注入的块我希望能了解为什么会这样,以及我如何通过编程定义一个可注入的常量。通过在控制器中定义一个常量,你想实现什么?常数是否依赖于来自控制器的数据?完全正确。我基本上想把一些静态数据分享给不同的控制器,这样我就可以在登录后的控制器中初始化数据。常数似乎是最合乎逻辑的结构。我最终使用了一个在解析过程中作为路由的一部分调用的服务,所以这是在用户登录之后发生的。解析的对象被注入到需要该数据的控制器中。这是一个相当复杂的解决方案,但如果我想在控制器中定义它,我就不能让它作为一个简单的常量工作。