2016-02-08 118 views
1

當我最初調用該函數:JS功能消失

var session = function(){ 
    console.error(service.get()); 
    if(service.get().session === undefined){ 
     $localStorage.user.session = { 
      timeLeft: 0, // Time left until a user session ends (in minutes). 
      start: function(timeLeft) { 
       $localStorage.user.session.timeLeft = timeLeft; 
       $localStorage.user.session.interval; 
      }, 
      stop: function(){ 
       $interval.cancel($localStorage.user.session.interval); 
      }, 
      interval: $interval(function() { 
       $localStorage.user.session.timeLeft -= 1; 

       if($localStorage.user.session.timeLeft <= 0){ 
        $state.go('signin'); 
       } 
      }, 0.125 * 60000) 
     }; 
    } 

    return $localStorage.user.session; 
}; 

function sessionRestart(){ 
    session(); 
}; 
sessionRestart(); 

,它創建的所有變量session對象,但是當我重新加載頁面它不填充作爲函數的變量。我該如何解決這個問題?


編輯 該應用程序是AngularJS,我使用ngStorage$localStorage,代碼是爲能在我的申請裏factory找到用戶會話。

+2

我不知道它是如何工作的angularjs,但在'localstorage'你只可以存儲純文本數據,因此您的JSON或對象必須字符串化。 –

+1

@MarcosPérezGudeOP不直接使用localStorage,所以沒關係。 – dfsq

+1

@dfsq好的,我說'我不知道它是如何在angularjs中工作的,因爲那個。但如果沒關係,那好吧:) –

回答

0

MarcosPérezGude讓我想到了解決問題的辦法。哪一個將$interval移到$localStorage之外解決了我的問題。不知道爲什麼它不起作用。

現在,該代碼如下所示:

var session, 
    startSession: function(timeLeft) { 
     if($localStorage.user.session === undefined){ 
      if(timeLeft === undefined){ 
       timeLeft = 0; 
      } 

      $localStorage.user.session = { 
       timeLeft: timeLeft 
      }; 
     } 

     if (session === undefined) { 
      session = $interval(function() { 
       $localStorage.user.session.timeLeft -= 1; 

       if($localStorage.user.session.timeLeft === undefined){ 
        service.stopSession(); 
       } 

       if($localStorage.user.session.timeLeft <= 0){ 
        $state.go('signin'); 
       } 
      }, 1 * 60000); // Time in milliseconds. Minutes * milliseconds = total milliseconds before the interval repeats. 
     } 
    }, 
    stopSession: function() { 
     $interval.cancel(session); 
     session = undefined; 
    };