【问题标题】:Define a constant that can be used in module/controller/etc. definition in angular定义一个可以在模块/控制器/等中使用的常量。角度定义
【发布时间】:2016-01-11 11:19:07
【问题描述】:

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

所以我有这个代码:

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

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

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

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

【问题讨论】:

  • 你也可以$rootScope

标签: javascript angularjs constants


【解决方案1】:

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

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

【讨论】:

  • 我宁愿在单独的文件中定义常量,我不确定在这种情况下 Angular 将如何注入它?
  • 欢迎来到 JavaScript 的世界。你已经不在 C# 领域了。
  • 你说这样不行吗? :)
【解决方案2】:

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

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

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

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

【讨论】:

  • 您可以定义它们并将其传递给您的控制器、指令等
猜你喜欢
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 2015-10-11
  • 1970-01-01
  • 1970-01-01
  • 2016-06-23
  • 2015-07-28
  • 2014-10-15
相关资源
最近更新 更多