2016-01-18 15 views
7

ページには、いくつかの角度モジュールがあります。 各モジュールについて、モジュールのバージョンを含む定数を定義します。AngularJS module.constant():モジュール内で定数を定義する方法は?

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

I定数をモジュール内を定義したにもかかわらず。しかし、定数のモジュール1を使用すると、得られる値は「2.0.0」...

モジュールに適切な定数(または他のもの)を定義する方法はありますか?

を編集してください。代替ソリューションについては、コントローラの宣言などで使用方法を教えてください。

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

'module2'を' module1'の依存関係としてインポートした場合、 'version'定数がオーバーライドされることがあります。 – nhd

+2

[AngularJSのモジュールと名前空間/名前の衝突]の可能性があります(http:// stackoverflow。 com/questions/13406791/modules-and-namespace-name-collision-in-angularjs) – Zakaria

答えて

6

非常に良い質問です。私はそれはあなたのニーズに合ったどのくらいかわからない

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

:私はこのための迅速な修正を考えることができます。しかし、私はそれが助けてくれることを望みます

主な問題は、Angularでの命名です。サービス/定数/値などに同じ名前を付けることはできません。それらは上書きされます。私は上記のように "名前空間"でこの問題を解決しました。名前のような名前空間を注入する

例:http://codepaste.net/5kzfx3

編集:

あなたたとえば、あなたはとてもようにそれを使用することができます。モジュール2はModule1の定数をオーバーライドしているので起こり

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

名前にドットを持つ定数を挿入するにはどうすればよいですか? (モジュール内のコントローラなど) – Eria

+0

angular.module()。service(['module1.version']、function(version){});別名を付けることができます。このような依存関係を注入することもベストプラクティスです。例:http://codepaste.net/5kzfx3 –

+0

注射のための提案をすると、次のエラーが表示されます: '不明なプロバイダー:module1.infoProvider < - module1.info < - myCtrl' – Eria

1

moduleName.versionを名前として使用できますが、同じ名前を使用することはできません。

関連する問題