据我所知,所有的AngularJS服务都是singleletons.然而,在我的实现中,这似乎不是真的。AngularJS v1.4.14
.我创建了两个控制器,在这两个控制器中注入了一个服务。
FooController
angular.module('fooModule').controller('FooController', [
'myService',
function (myService) {
...
}
]);
BarController
angular.module('barModule').controller('BarController', [
'myService',
function (myService) {
...
}
]);
我的服务
'use strict';
angular.module('myModule').service('myService', MyService);
function MyService() {
var initialize = function () {
console.log("INITIALIZE");
};
initialize();
}
我在日志中得到了两次INTIALIZE.经过额外的测试,我非常确定,有两个问题。myService
实例。每个控制器一个.现在请记住,这来自一个旧项目,这是遗留的代码,可以有任何配置,我不知道。
你能解释一下吗?我如何使我的服务成为一个单人?
似乎在我的代码中,每个模块都有一个初始化的Angular。
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById('foo'), ['fooModule']);
});
angular.element(document).ready(function () {
angular.bootstrap(document.getElementById('bar'), ['barModule']);
});
我把它改成了所有模块的单一的angular初始化。
angular.element(document).ready(function () {
angular.bootstrap(document, ['fooModule', 'barModule']);
});
现在,注入到不同控制器中的服务确实是作为单子来表现的