【发布时间】:2015-08-03 15:40:23
【问题描述】:
我在 creating services 的 Angular 文档中看到,服务是通过在模块上定义工厂来创建的。
但是,我需要定义一个通用服务以供跨多个模块使用。 我在文档中没有看到任何内容。可以做到吗?或者有什么方法可以从创建它的模块以外的模块访问服务?
【问题讨论】:
标签: angularjs
我在 creating services 的 Angular 文档中看到,服务是通过在模块上定义工厂来创建的。
但是,我需要定义一个通用服务以供跨多个模块使用。 我在文档中没有看到任何内容。可以做到吗?或者有什么方法可以从创建它的模块以外的模块访问服务?
【问题讨论】:
标签: angularjs
请查看工作演示:JSFiddle。
在一些通用模块中定义服务,例如:
angular.module('mySharedModule', [])
.service('mySharedService',...
然后在其他模块中,使用
angular.module('myModule', ['mySharedModule'])
.controller('mySharedService', function (mySharedService) {
...
然后您可以在模块myModule 中使用mySharedService。你的服务现在可以注入它了。
【讨论】:
service 和 factory 都是 providers。从某种意义上说,它们是为了同一个目的。请查看stackoverflow.com/questions/15666048/…
服务必须属于一个模块。但是,要在其他模块中使用它,只需将拥有的模块包含在您想要使用它的模块中。示例:
angular.module('common', [])
.factory('yourService', ...);
angular.module('yourModule', ['common'])
.controller('yourController', ['yourService', function(yourService) {
// common service available here.
}]);
【讨论】: