2014-02-19 17 views
1

我正在處理我的第一個AngularJS項目,並且正在處理一個超時,如果用戶沒有點擊任何內容,它會在幾分鐘後將用戶重定向到首頁。每次頁面加載都會調用超時以重新啓動超時。

但我的問題是,多次調用restart()。一次爲每個頁面/視圖加載。我使用ngRoute。
例如,如果點擊了三個頁面,timeout()現在被調用了三次,當$ timeout達到時間時,restart()被調用三次。

myapp.controller(..., [...], function(...) { 

    function restart() { 
     $location.path("/slide/1"); 
    } 

    function timeout() { 
     var timeoutHandle = $timeout(function() { 

      $timeout.cancel(timeoutHandle); 
      restart(); 

     }, timeoutTime); 
    } 

    timeout(); 
} 
+0

timeoutHandle() - 刪除超時,因爲我知道 – KoIIIeY

回答

0

嘗試使用此代碼:

var redirectTimeout; 

var redirect = function() { 
    $location.path("/slide/1"); 
}  

$timeout.cancel(redirectTimeout); 

redirectTimeout = $timeout(function() { 
    var timeoutTime = 5000 // five seconds 
    redirectTimeout = $timeout(redirect, timeoutTime); 
}); 

這裏是JSFiddle

+0

似乎是同一個問題。重定向()被多次調用。忘了提及我使用ngRoute的網頁。 – Patrik

+0

I 「即暫時」 與此解決它: $間隔(函數(){ 如果(定時器> = timeoutTime){ 重定向(); 計時器= 0; } 計時器=計時器+ 100; },100); – Patrik

0

那豈不是更好地把這種功能的工廠內?