Angolare, router UI. Utilizzando $ intervallo in un controller di uno stato in questo modo:
$scope.Timer = null;
$scope.startTimer = function() {
$scope.Timer = $interval($scope.Foo, 30000);
};
$scope.stopTimer = function() {
if (angular.isDefined($scope.Timer)) {
$interval.cancel($scope.Timer);
}
};
Il problema? Il timer persiste dopo aver lasciato lo stato. La mia comprensione era che il $ scope e il controller sono essenzialmente "distrutti" quando viene lasciato uno stato. Quindi, in base a ciò, il timer dovrebbe fermarsi (All'interno del controller, sto cancellando il timer quando si muove, funziona - ma persiste se si naviga verso uno stato diff). Che cosa sto fraintendendo qui?
Immagino che poiché intervallo e timeout sono services in angolare, sono disponibili ovunque, ma non riesco ancora a capire come vedono le funzioni nel controller non inizializzato, a meno che non venga copiato. La mia soluzione è di usare solo intervalli regolari js buoni e vecchi?
Un timer vaniglia sarebbe anche persistere, a meno che non cancellarlo. – Boaz