Как доказать, что службы angular являются одноэлементными?

#javascript #angularjs

#javascript #angularjs

Вопрос:

Я слышал, что службы angular являются одноэлементными. Как я могу это доказать. Для ванильного javascript я могу создать одноэлементный шаблон и доказать его, как показано в приведенном ниже коде.

 var mySingleton = (function(){
  var instance;
  
  function init(){
    var privateRandomNumber = Math.random();
    return {
      getRandomNumber : function(){
        return privateRandomNumber;
      }
    }
  }
  return {
    getInstance: function(){
      if(!instance) {
        instance = init();
      }
      
      return instance;
    }
  }
})();

var singleA = mySingleton.getInstance();
var singleB = mySingleton.getInstance();

console.log(singleA.getRandomNumber() === singleB.getRandomNumber()); 

Кто-нибудь может дать мне снимок кода, чтобы доказать, что службы Angular являются одноэлементными, как я делаю в приведенном выше коде.

Комментарии:

1. Создайте объект service, который задает случайное число, затем извлеките его дважды с помощью $injector, сравните число. Или внедрите службу в два отдельных контроллера и сравните количество.

2. Разве вы не можете просто запросить услугу дважды?

Ответ №1:

 var myApp = angular.module('myApp',[]);
myApp.service('mySingleton', function() {
    var privateRandomNumber = Math.random();
    return {
        Number : privateRandomNumber
    };
});

function MyCtrl($scope, mySingleton) {
    $scope.randNumber = mySingleton.Number;
}

function MyCtrl2($scope, mySingleton) {
    $scope.randNumber = mySingleton.Number;
}
 

HTML-код

 <div ng-controller="MyCtrl">
   Hello, {{randNumber}}!
</div>
<div ng-controller="MyCtrl2">
   Hello, {{randNumber}}!
</div>
 

Да, оба случайных числа одинаковы.

Комментарии:

1. Спасибо @sajeetharan, я это понял, поэтому я немного модифицирую код.

2. Отметьте как ответ, если это помогло