2016-07-30 65 views
0

我有一個在離子/角度應用程序中運行doRefresh()的簡單計數器,您可以看到它使用$ interval調用自身,但是當用戶離開此視圖時。櫃檯仍在運行。我不能讓它停止運行。我已經嘗試了很多東西,包括下面的代碼。請幫忙。您要

$interval(function() { 
    $scope.doRefresh(); 
    console.log("refresh done"); 
}, 3000); 

$scope.$on('$ionicView.enter', function(){ 

$scope.$on("$destroy",function(){ 
    if (angular.isDefined($scope.doRefresh())) { 
     $interval.cancel($scope.doRefresh()) 
     console.log("Destroyed"); 
    } 
    }); 


}); 

回答

0

$interval返回您需要取消間隔的承諾。請參閱以下代碼:

var refresher = $interval(function() { 
    $scope.doRefresh(); 
    console.log("refresh done"); 
}, 3000); 

$scope.$on('$ionicView.enter', function(){ 

$scope.$on("$destroy",function(){ 
    //This really wouldn't be needed, as refresher should always be defined. 
    if (angular.isDefined(refresher)) { 
     $interval.cancel(refresher); 
     refresher = undefined; 
     console.log("Destroyed"); 
    } 
    }); 


}); 
+0

這會返回一堆錯誤。我用這段代碼嘗試了多次不同的嘗試。沒有任何工作 – angularMe

+0

停止基於URL的間隔會更好嗎?並不是必須離子view.leave或類似的東西? – angularMe

+0

解釋錯誤@angularMe – FrankerZ