使用Angular常量来声明控制器名称

时间:2014-11-27 08:34:58

标签: javascript angularjs constants angularjs-controller

我正在尝试为我在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常量?

感谢。

2 个答案:

答案 0 :(得分:0)

角度常数只能注入角度函数

directive('foo', function(CONTROLLERS){});

它们在注射后无法使用。

您是否尝试使用常量,因为您不希望将指令名称保留为字符串?使用字符串很好,因为如果指令名称发生了变化,你会遇到更大的问题。

您是否尝试使用常量来解决其他问题?

答案 1 :(得分:0)

一种解决方案是将常量声明为普通的javascript变量:

var CONTROLLERS = {

    "LOGIN_CONTROLLER" : "loginCtrl",
    "HOME_PAGE_CONTROLLER" : "homePageCtrl"
}

通过这种方式,您的代码可以正常工作。

以下是一个例子: http://jsfiddle.net/43fu3poz/