2016-10-13 18 views
1

角度サービスはシングルトンだと聞きました。どのように私はそれを証明することができます。バニラの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());

誰も私に、私は上記のコードでやっているように角度サービスはシングルトンであることを証明するためのコードのスナップショットを与えることができます。

+0

乱数を設定し、$ injectorを使用して2回取得するサービスオブジェクトを作成し、その数を比較します。または、サービスを2つの別々のコントローラに挿入し、番号を比較します。 –

+0

サービスを2回だけ要求することはできませんか? – Bergi

答えて

3
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> 

はい、randNumberどちらも同じです。

+0

ありがとう@sajeetharan、私はそれを理解したので、私は少しコードを変更しています。 – jforjs

+0

役に立ったと答えてください – Sajeetharan

関連する問題