Sto interrogando i miei dati ogni 2 secondi per tenerli aggiornati sulla pagina. Il mio problema è quando visito un'altra pagina il timeout rimane attivo. Come posso cancellare il mio timeout quando visito una nuova pagina?
function IndexCtrl($scope, $timeout, RestData) {
$scope.rd = {};
(function getRestDataFromServer() {
RestData.query(function(data){
$scope.rd = data;
$timeout(getRestDataFromServer, 2000);
});
})();
}
// EDIT ho trovato una soluzione, ma non sono sicuro se è un buon compromesso. Quando salgo il timeout su $ rootScope, posso cancellarlo in tutti gli altri controller.
function IndexCtrl($scope, $rootScope, $timeout, RestData) {
$scope.rd = {};
(function getRestDataFromServer() {
RestData.query(function(data){
$scope.rd = data;
$rootScope.prom = $timeout(getRestDataFromServer, 2000);
});
})();
}
function newPageCtrl($scope, $rootScope, $timeout) {
$timeout.cancel($rootScope.prom);
}
hai provato '$ timeout.cancel()'? – Cherniv