0

サービス「プロバイダー」でサービス「ファクトリー」を使用しようとしています。どのように行うのが最善の方法です。私はさまざまなモジュールで作業しています。しかし、サービスを新しい機能にインポートすると、間違いが発生します。サービス「プロバイダー」でサービスを再利用または注入する最良の方法は何ですか。

http://jsfiddle.net/aurigadl/facgT/5/

var moduleService = angular.module('templatesServices', []);
moduleService.factory('templateSrv',['$q', function($q){ 
    return {
        data: function(){
            console.log('In factory');
            return 2000;
        }
    }
}])

function  login(templateSrv){
  this.$get     = angular.noop;   
  this.getAcces = function(){
    return 'some data';
  };
}   

login.$inject = ['templatesServices'];

angular.module('loginProvider', ['templatesServices']).provider('login', ['caliopewebTemplateSrv',login]);
4

1 に答える 1

0

プロバイダーは、堅実なサービスやその他のコンポーネントの準備が整う前の段階で利用できるため、サービスをプロバイダーに直接注入することはできません。

$getただし、サービスを実際にインスタンス化するときに使用するプロバイダーの関数にサービスを挿入することはできます。したがって、定義されているモジュールが定義されているモジュールが「必要」である限り、loginProviderアクセスできませんtemplateSrvが、サービスはアクセスできます。あなたの例ではこれを行っているように見えますが( )、フィドルは非常に異なっているようです。logintemplateSrvloginProviderangular.module('loginProvider', ['templatesServices'])

var templateModule = angular.module('templateModule', []);
templateModule.factory('templateSrv',[function(){ 
    return {
        // ...
    };
}]);

function loginProvider(){
    this.$get = ['templateSrv', 'otherService', function(templateSrv, otherService) {
      // Use templateSrv/otherService (from templateModule or loginModule) somehow
    }];
    this.getAccess = function(){
        return 'some data';
    };
}

angular.module('loginModule', ['templateModule'])
    .provider('login', loginProvider);

私はあなたの意図に完全に従っていないので、これ以上の情報を提供することはできませんが、これが役に立てば幸いです.

ソース:

于 2013-10-09T01:08:23.147 に答える