1

ファクトリが1つのみのモジュール(共有サービス)があるとします。私たちはモジュール共有サービスを使用しないコントローラで共有サービスを使用するには?

angular.module('app', ['sharedService']) 
.controller('theCtrl', function(sharedSrv) { 
    var self = this; 

    self.setSharedNumber = sharedSrv.setNumber; 
} 

への依存を渡すことで、共有サービスを注入することができ、コントローラの使用サービス場合は、どのように自分自身のモジュールから共有サービスを注入?見た

angular.module('sharedService', []) 
    .factory('sharedSrv', sharedService) 

function sharedService() { 
    var number; 

    return { 
    getNum: getNumber 
    }; 

    function getNumber() { 
    return number; 
    } 

    function setNumber(i) { 
    number = i; 
    } 
} 

angular.module('app', ['sharedService']) 
.controller('theCtrl', theCtrlFun) 
.service('theSrv', theSrvFun) 

theCtrlFun.$inject = ['theSrv'] 

function theCtrlFun(localSrv) { 
// How call sharedService ? 
} 

function theSrvFun() { 
    // Some fantastic features. 
} 

はあなたの助けをいただき、ありがとうございます。あなたの共有サービスとして

答えて

2

を使用してDIを定義するために、あなたはstring

angular.module('app', [sharedService]) 
.controller('theCtrl', function(sharedSrv) { 

ように、モジュールの名前を渡す必要がある場合こと

angular.module('app', ['sharedService']) 
.controller('theCtrl', function(sharedSrv) { 

ORあなたはDI

angular.module('app', ['sharedService']) 
.controller('theCtrl', ["sharedSrv", function(sharedSrv) { 
    //code here 
}]); 
+0

ありがとうございます。しかし、最後のブロックでは、このサービスが別のアプリケーションモジュールにある場合、「sharedSrv」はどのように認識されますか?タイプミスだった –

+0

@MatthieuLobryは、ヘッドアップのためのおかげで、私はそれを修正していた。.. –

1

声明angular.module('app', [sharedService])から削除sharedServiceは、このモジュールの一部ではありません。

あなたはただ、このサービスのメソッドを呼び出すtheCtrlFun機能では文のtheSrvないtheSrvFuntheCtrlFun.$inject = ['theSrv']

を注入する必要があります。 例えばsomeMethodtheSrvサービスに定義されている、あなたはこの

theSrv.someMethod(); 

例えばのように呼び出す必要があります

angular.module('app', []) 
    .controller('theCtrl', theCtrlFun) 
    .service('theSrv', theSrvFun) 

theCtrlFun.$inject = ['theSrv'] 

function theCtrlFun(localSrv) { 
    theSrv.someMethod(); // calll in this way 
} 

function theSrvFun() { 
    // Some fantastic features. 
} 

そのより良いあなたが変数としてサービスモジュールを注入すべきではないArray Annotation

angular.module('app', []) 
    .controller('theCtrl', ['theSrv', function(theSrv) { 

     theSrv.callMe(); 

    }]) 
    .service('theSrv', function() { 

     this.callMe = funtion() { 


     } 

    }) 
+0

を私は構文で効果的に多くのミスをしたあなたの助けをいただき、ありがとうございます。 しかし、私はsharedServiceとTheSrvを同じcontrollermで同時に使用したいと思います。 (SrvにはtheCtrlのツールのみが含まれますが、sharedServiceは他のモジュールで使用されます)。 –

0

のインライン配列の注釈をたどる可能性がこれを試してみてください:

angular.module('app', []) 
.controller('theCtrl', theCtrlFun) 
.service('theSrv', theSrvFun) 

theCtrlFun.$inject = ['theSrv'] 

function theCtrlFun(localSrv) { 
// How call sharedService ? 
console.log(localSrv) 
} 

function theSrvFun() { 
    // Some fantastic features. 
} 

plnkr:http://plnkr.co/edit/lSosJbYfG6tuF4pCXYqR?p=preview

+0

私がミスを犯し、ありがとうございます。 しかし、私は同じコントローラでtheSrvとsharedServiceを使用したいのですが、どうすればいいですか? –

+0

他のモジュールのサービスを使用するには、そのモジュールをモジュールに注入し、そのモジュールからコントローラにサービスを注入する必要があります –

関連する問題