Ich suche alle 2 Sekunden nach meinen Daten, um sie auf der Seite zu aktualisieren. Mein Problem ist, wenn ich eine andere Seite besuche, bleibt das Timeout aktiv. Wie kann ich meine Zeitüberschreitung abbrechen, wenn ich eine neue Seite besuche?
function IndexCtrl($scope, $timeout, RestData) {
$scope.rd = {};
(function getRestDataFromServer() {
RestData.query(function(data){
$scope.rd = data;
$timeout(getRestDataFromServer, 2000);
});
})();
}
// EDIT fand ich eine Lösung, aber ich bin nicht sicher, ob es ein gutes ist. Wenn ich mein Timeout im $ rootScope abspeichere, kann ich es in allen anderen Controllern abbrechen.
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);
}
hast du '$ timeout.cancel()' ausprobiert? – Cherniv