AngularJS module.constant():如何仅在模块内定义常量?

时间:2016-01-18 14:55:52

标签: javascript angularjs

在页面上,我有几个Angular模块。 对于每个模块,我定义一个包含模块版本的常量。

var module1 = angular.module('module1').constant('version', '1.2.3');
var module2 = angular.module('module2').constant('version', '2.0.0');
...

我虽然在模块中定义了 常量。但是当我在 module1 中使用常量时,我​​得到的值是'2.0.0'......

有没有办法定义一个适合模块的常量(或其他任何东西)?

编辑:对于替代解决方案,您能否解释一下如何使用它,例如在控制器声明中?

module2.controller('myCtrl', function( $scope, $http, $q, ..., version ){
    // Here I can use the constant 'version'
}

2 个答案:

答案 0 :(得分:6)

一个非常好的问题。我能想到快速解决这个问题:

public static void main(String ... args) {
    Function<Number, char[]> func = 
       convert((Number o)->o.toString(), o->o.toCharArray()).andThen(Function.identity());
}

public static <A, B, C> Function<A, C> convert(Function<A, B> c1, Function<B, C> c2) {
    return t -> c2.apply(c1.apply(t));
}

我不知道它适合您的需求。但我希望它有所帮助。

主要问题是Angular中的命名。您不能为服务/常量/值等具有相同的名称。它们将被覆盖。我用&#34;命名空间&#34;解决了这个问题。就像我上面给你看的那样。

注入名称空间的示例:http://codepaste.net/5kzfx3

修改

对于您的示例,您可以像这样使用它:

(?i)\b(?=[a-z]*\d)[a-z\d]{3,}\b
      ^^^^^^^^^^^^

答案 1 :(得分:1)

这是因为module2重写了module1常量。

您可以使用moduleName.version作为名称,但无法使用相同的名称。