AngularJS 服务不是单例

AngularJS service is not a singleton

据我所知,所有AngularJS服务都是单例。 但是,在我的实现中,这似乎不是真的。 我正在使用 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']);
});

现在,注入不同控制器的服务确实表现为单例