#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. Отметьте как ответ, если это помогло