異なるモジュールから同じ名前の 2 つの AngularJS サービスを使用するにはどうすればよいでしょうか? 質問する

異なるモジュールから同じ名前の 2 つの AngularJS サービスを使用するにはどうすればよいでしょうか? 質問する

AngularJS に と という 2 つのモジュールがありfoobarその両方で というサービスが定義されているとします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.bazbaz

おすすめ記事