38

AngularJS はサービス名間の衝突をどのように処理しますか? たとえば、「foo」というサービスをそれぞれ含む 2 つのモジュールを宣言したとします。再利用可能なモジュールを作成したい場合、または他のサードパーティ モジュールとの衝突を回避したい場合、サービスを "名前空間" にする良い方法は何でしょうか?

4

2 に答える 2

40

現在、AngularJS はサービスの名前空間の衝突を処理しないため、同じ名前のサービスを持つ 2 つの異なるモジュールがあり、両方のモジュールをアプリに含めると、1 つのサービスしか利用できなくなります。

現時点では、サービス名にカスタム プレフィックスを付けることをお勧めします。例:

angular.module('myprefix_mymodule',['dep1', 'dep2']).factory('myprefix_MyService', ...)

于 2013-02-16T11:00:06.520 に答える
8

pkozlowski が指摘したように、そうではありません。すべてのサービスに手動でプレフィックスを追加できます (これはちょっと面倒です)。代わりに、名前空間のハックを書きました。 https://github.com/callmehiphop/angular-namespacer

于 2013-10-23T17:54:26.360 に答える