2017-05-05 30 views
1

在下面你會看到我的代碼的一部分來創建一個時間間隔,應該取消離開狀態後的時間間隔......但事實並非如此。

var init = function() { 
     $translatePartialLoader.addPart("app/bottling/palletTnT/palletTnT.grid"); 
     $translate.refresh(); 

     //$scope.disablePaging = false; 
     setColumnDefs(); 
     updateDataGrid(); 
     getRefreshTimer().then(function() { 
      if ($scope.RefreshTime != 0 && !intervalPromise) {     
        intervalPromise = $interval(function() { 
         getLaneBufferData(palletTnTService.wrapperFilter); 
        }, $scope.RefreshTime * 1000); 
       } 
     }); 


    } 


    var intervalPromise = null; 

    $scope.$on('$stateChangeSuccess', function() { 
      $interval.cancel(intervalPromise); 

    }); 

init是我打開頁面的初始函數,所以問題是這樣的;

我們打開此頁面,它正在創建間隔非常好並正確處理。但是當我走到另一個頁面並改變狀態時,它仍然在後臺工作......這很奇怪。但是,如果我手動重新加載,我的意思是F5,間隔時間正在進行,並且不工作......所以我對此沒有任何想法,我嘗試了很多方法但沒有幫助。

在此先感謝...

bytheway與'$ destroy'方法相同的結果。

回答

0

您的代碼讀取的方式,似乎您的$stateChangeSuccess片與您的間隔在同一頁上。當你的狀態改變成功時,你的$範圍已經被銷燬並且不會觸發這個事件。如果將其更改爲$stateChangeStart,則應該看到所需的結果。

+0

感謝但沒有改變,仍在另一個州的背景工作 –

+0

我試圖殺死所有的間隔,但它墜毀了其他操作,所以殺死所有不幫助太... –