AngularJS услуга не единичная - PullRequest
0 голосов
/ 23 апреля 2020

Насколько я знаю, все AngularJS сервисы являются одиночными. Однако в моей реализации это, похоже, не соответствует действительности. Я использую AngularJS v1.4.14. Я создал два контроллера, где один сервис внедряется в обоих.

FooController

angular.module('fooModule').controller('FooController', [
  'myService',
  function (myService) {
    ...
  }
]);

BarController

angular.module('barModule').controller('BarController', [
  'myService',
  function (myService) {
    ...
  }
]);

MyService

'use strict';
angular.module('myModule').service('myService', MyService);
function MyService() {
  var initialize = function () {
    console.log("INITIALIZE");
  };

  initialize();
}

Я получаю INTIALIZE дважды в журнале. И после дополнительного тестирования я почти уверен, что есть два myService экземпляра. Один на контроллер. Теперь имейте в виду, что это происходит из старого проекта, который является устаревшим кодом, и может быть любая конфигурация, о которой я не знаю.

Можете ли вы объяснить это? Как я могу сделать мой сервис одноразовым?

1 Ответ

0 голосов
/ 27 апреля 2020

Кажется, в моем коде была инициализация 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']);
});

Теперь сервисы, введенные в разные контроллеры, действительно ведут себя как одиночные

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...