我正在尝试为我在Angular项目中使用的所有字符串值声明常量。我的示例代码如下所示,
//create module
var myApp = angular.module("myApp",[]);
//define constants for controller names
myApp.constant("CONTROLLERS", {
"LOGIN_CONTROLLER" : "loginCtrl",
"HOME_PAGE_CONTROLLER" : "homePageCtrl"
});
现在,在各个控制器文件中创建控制器时,我使用下面的代码
myApp.controller(CONTROLLERS.LOGIN_CONTROLLER, function(){.....});
当我执行我的应用程序时,在加载loginCtrl.js文件时出现以下错误,
“未捕获的ReferenceError:未定义CONTROLLERS”
我是否以错误的方式使用Angular常量?
感谢。
答案 0 :(得分:0)
角度常数只能注入角度函数
directive('foo', function(CONTROLLERS){});
它们在注射后无法使用。
您是否尝试使用常量,因为您不希望将指令名称保留为字符串?使用字符串很好,因为如果指令名称发生了变化,你会遇到更大的问题。
您是否尝试使用常量来解决其他问题?
答案 1 :(得分:0)
一种解决方案是将常量声明为普通的javascript变量:
var CONTROLLERS = {
"LOGIN_CONTROLLER" : "loginCtrl",
"HOME_PAGE_CONTROLLER" : "homePageCtrl"
}
通过这种方式,您的代码可以正常工作。
以下是一个例子: http://jsfiddle.net/43fu3poz/