定义可在模块/控制器/等中使用的常量。角度定义

时间:2016-01-11 11:19:07

标签: javascript angularjs constants

我想将模块名称,控制器名称等放到字符串常量中,以便在需要时可以轻松更改它们(与在每个文件中修复它相比)。

所以我有这段代码:

 angular
    .module("app.admin.home")
    .controller("HomeController", HomeController);

我希望它有这个(或类似的):

 angular
    .module(moduleConstants.admin)
    .controller(controllerConstants.adminHome, HomeController);

是否有正确的方法在Angular中定义这种类型的常量(普通注入在这种情况下不起作用)。我想我可以只创建全局javascript常量,但也许有更好的方法来实现这一点,一些常见的方法来定义角度中的常量。我有一个强大的C#背景,我觉得常常需要注入常量,它们不是可以有不同实现的抽象代码,因此注入它而不仅仅是引用听起来是错误的。

2 个答案:

答案 0 :(得分:1)

为避免污染全局名称空间,您可以使用闭包:

(function (moduleConstants, controllerConstants) {
    angular
        .module(moduleConstants.admin)
        .controller(controllerConstants.adminHome, HomeController);
})({admin: "app.admin.home"},
   {adminHome: "HomeController"});

答案 1 :(得分:0)

根据文档,使用角度js定义常量的正确方法是使用:Constants

这可以是一个简单的实现:

angular.module('config', [])
    .constant('CONSTANT_YOU_NEED', {
        name: 'test',
        valueOfConst: '3.14'
    });

但我想你不能将它用于模块或控制器,而只是传递给它们