假设有一个模块只有一个工厂(共享服务)。
angular.module('sharedService', [])
.factory('sharedSrv', sharedService)
function sharedService() {
var number;
return {
getNum: getNumber
};
function getNumber() {
return number;
}
function setNumber(i) {
number = i;
}
}
我看到我们可以通过将依赖项传递到模块来注入(inject)共享服务
angular.module('app', ['sharedService'])
.controller('theCtrl', function(sharedSrv) {
var self = this;
self.setSharedNumber = sharedSrv.setNumber;
}
但是,如果 Controller 使用他自己的模块中的服务,如何注入(inject)共享服务?
angular.module('app', ['sharedService'])
.controller('theCtrl', theCtrlFun)
.service('theSrv', theSrvFun)
theCtrlFun.$inject = ['theSrv']
function theCtrlFun(localSrv) {
// How call sharedService ?
}
function theSrvFun() {
// Some fantastic features.
}
感谢您的帮助。
最佳答案
您不应该将服务模块作为变量注入(inject),您需要将模块名称作为 string
angular.module('app', [sharedService])
.controller('theCtrl', function(sharedSrv) {
应该是
angular.module('app', ['sharedService'])
.controller('theCtrl', function(sharedSrv) {
或者你可以按照 DI 的内联数组注释
angular.module('app', ['sharedService'])
.controller('theCtrl', ["sharedSrv", function(sharedSrv) {
//code here
}]);
关于javascript - 如何将共享服务与不使用共享服务的 Controller 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37831670/