AngularJS服务不是一个单体

问题描述 投票:0回答:1

据我所知,所有的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 实例。每个控制器一个.现在请记住,这来自一个旧项目,这是遗留的代码,可以有任何配置,我不知道。

你能解释一下吗?我如何使我的服务成为一个单人?

angularjs singleton
1个回答
0
投票

似乎在我的代码中,每个模块都有一个初始化的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']);
});

现在,注入到不同控制器中的服务确实是作为单子来表现的

© www.soinside.com 2019 - 2024. All rights reserved.