AngularJS に と という 2 つのモジュールがありfoo
、bar
その両方で というサービスが定義されているとしますbaz
。
私のアプリケーションでは、次のようにしてそれらに依存しています。
var app = angular.module('app', [ 'foo', 'bar' ]);
baz
次に、コントローラーでサービスを使用するために、
app.controller('blaController', [ '$scope', 'baz', function($scope, baz) {
// ...
}]);
2 つのサービスのうちどちらを使用するかをどのように定義すればよいでしょうか? 完全修飾名のようなものはありますか?
ベストアンサー1
サービスロケータは名前でサービスを検索します(AngularJS ガイド DI)。 しかしAngularJS の「名前空間」サービス:
現在のところ、AngularJS はサービスの名前空間の衝突を処理しません。そのため、同じ名前のサービスを持つ 2 つの異なるモジュールがあり、両方のモジュールをアプリに含めると、使用できるサービスは 1 つだけになります。
完全修飾名を「手動で」作成できると思います。つまり、サービスにではなくfoo.baz
という名前を付けます。これは一種の自己欺瞞です。さらに、このように記述しても名前空間が実際になるわけではありませんが、コードを読んだ他の人はそう思うかもしれません。bar.baz
baz