web-dev-qa-db-ja.com

異なるファイル内の同じモジュールのサービスを定義するangularjs

angularアプリでサービスを定義する2つのファイルがありますが、ディレクティブで両方を使用しようとすると、どちらのディレクティブでもサービスプロバイダーが見つからないというエラーが表示されます。 2番目に定義します。1つのサービスが他のサービスを上書きしているようです。service2.jsのモジュール定義をmyapp.services2に変更すると、機能します。この方法で同じモジュールに複数のファクトリを追加できると思います。誰かが指摘できますか私が間違っていることを出しますか?

service1.js:

var services = angular.module('myapp.services',[]);
services.factory('Service1', function() {
    // service code
});

service2.js:

var services = angular.module('myapp.services',[]);
services.factory('Service2', function() {
    // service code
});

mydirective.js:

angular.module('myappdirective', []).directive('myapp', ['Service1', 'Service2',
function(service1,service2) {
    // directive code
}]);
15
Jeff Storey

これはドキュメントからです:

Angle.module( 'myModule'、[])を使用すると、モジュールmyModuleが作成され、myModuleという名前の既存のモジュールが上書きされることに注意してください。 angular.module( 'myModule')を使用して、既存のモジュールを取得します。

ここにあります: https://docs.angularjs.org/guide/module

45
aet

これは可能ですが、エラーが発生しやすいため、お勧めしません

すでに行っていることに小さな変更を加えます

Service1.js以外の他のファイルでモジュール変数を再宣言したり、モジュール定義を独自のファイルに配置したりして、これらのJSファイルをModule.js、services.js、directive.jsの順に含めないでください。働くでしょう

0
Basav