Angularjs 如何在不同模块中的两个控制器之间共享服务

Angularjs 如何在不同模块中的两个控制器之间共享服务,angularjs,angularjs-scope,controllers,Angularjs,Angularjs Scope,Controllers,我需要在两个控制器之间移动。 控制器位于不同的模块中。 我如何在他们之间共享服务 例如: var app1 = angular.module('Module1', []); app1.controller('FirstController', function ($scope,mutualService) { //Doing things }); var app2 = angular.module('Module2', []); app2.controller('SecondContro

我需要在两个控制器之间移动。 控制器位于不同的模块中。 我如何在他们之间共享服务

例如:

var app1 = angular.module('Module1', []);

app1.controller('FirstController', function ($scope,mutualService) {

//Doing things
});

var app2 = angular.module('Module2', []);

app2.controller('SecondController', function ($scope,mutualService) {

//Doing things
});
现在我也创建了一个服务,但我不知道如何正确地编写它

{???}.service('mutualService', function() {

    this.myObject = new MyObject();
});
我不知道在{???}服务中放置什么。 我无法放置app1或app2,因为其他两个不知道?
我错了吗

是的,你可以。您只需将服务模块设置为两个控制器模块的依赖项

第一:

var serviceModule = angular.module('ServiceModule', []);
serviceModule.service('MutualService', function() {

    this.myObject = new MyObject();
});
然后:


您可以在模块中导入模块:

var app1 = angular.module('Module1', []);

app.controller('FirstController', function ($scope,mutualService) {

//Doing things
});

var app2 = angular.module('Module2', ['Module1']);

app.controller('SecondController', function ($scope,mutualService) {

//Doing things
});

app1.service...
通过注入其模块,您可以在所有控制器和应用程序之间共享服务。然后在任何地方定义并调用函数

注意:由于不能在同一模板中使用两个应用程序,因此您必须在此处进行一些变通->

运行我的代码示例在两个不同的应用程序中调用服务功能,这会触发两个警报:

//定义app1和app2并注入服务模块
var app=angular.module('app',['app1','app2']),
app1=angular.module('app1',['services']),
app2=角度模块('app2',['services']);
角度.module('services',[]).factory('mutualService',function(){
//在此定义服务功能
var sampleFunc=函数(str){
警报(str);
};
返回{
sampleFunc:sampleFunc
};
});
//将mutualService注入CTR1
附件1.控制器('Ctrl1',功能(互助服务){
//呼叫服务功能
mutualService.sampleFunc('Ctrl1');
});
//将mutualService注入Ctrl2
附件2.控制器('Ctrl2',功能(互助服务){
//呼叫服务功能
mutualService.sampleFunc('Ctrl2');
});

在不同的模块上编写服务,您可以在任何需要的地方将此模块作为依赖项传递给所有模块

var serviceModule = angular.module('ServiceModule', []);
serviceModule.service('MutualService', function() {

    this.myObject = new MyObject();
});
例如:
var-app=angular.module('module',['ServiceModule'])

否则,在任何一个模块上写入服务,并将该模块作为依赖项传递给下一个模块,并且不要忘记在控制器中注入服务


这个答案可能会帮助您……

很遗憾,可能会重复!我通过将对象保存在localStorage对象中解决了这个问题,该对象属于javascript和浏览器。
var serviceModule = angular.module('ServiceModule', []);
serviceModule.service('MutualService', function() {

    this.myObject = new MyObject();
});