admin管理员组

文章数量:1291699

On a page, I have several Angular modules. For each module I define a constant which contains the version of the module.

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

I though a constant was defined inside a module. But when I use the constant inside module1, the value I get is '2.0.0'...

Is there a way to define a constant (or anything else) which is proper to a module ?

Edit: for alternative solutions, could you please explain how to use it, for example in a controller declaration ?

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

On a page, I have several Angular modules. For each module I define a constant which contains the version of the module.

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

I though a constant was defined inside a module. But when I use the constant inside module1, the value I get is '2.0.0'...

Is there a way to define a constant (or anything else) which is proper to a module ?

Edit: for alternative solutions, could you please explain how to use it, for example in a controller declaration ?

module2.controller('myCtrl', function( $scope, $http, $q, ..., version ){
    // Here I can use the constant 'version'
}
Share Improve this question edited Jan 18, 2016 at 15:33 Eria asked Jan 18, 2016 at 14:55 EriaEria 3,2026 gold badges34 silver badges63 bronze badges 2
  • see if you import module2 as a dependency of module1, in that case the version constant may get overriden – nhd Commented Jan 18, 2016 at 15:01
  • 2 Possible duplicate of Modules and namespace / name collision in AngularJS – Zakaria Commented Jan 18, 2016 at 15:09
Add a ment  | 

2 Answers 2

Reset to default 6

A very good question. I could think of a quick fix for this:

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

I don't know how much it suits your needs. But I hope it helps.

The main problem is the naming in Angular. You cannot have the same name for services/constants/values etc. They will be overwritten. I solved this problem with "namespaces" like I showed you above.

Example of injecting namespace like names: http://codepaste/5kzfx3

Edit:

For your example, you could use it like so:

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

That happens because module2 is overriding module1 constant.

You can use moduleName.version as a name, but it's not possible to use the same name.

本文标签: javascriptAngularJS moduleconstant()how to define a constant inside a module onlyStack Overflow