Я просматриваю свои данные каждые 2 секунды, чтобы их обновлять на странице. Моя проблема в том, что когда я посещаю другую страницу, тайм-аут остается активным. Как я могу отменить свой тайм-аут при посещении новой страницы?
function IndexCtrl($scope, $timeout, RestData) {
$scope.rd = {};
(function getRestDataFromServer() {
RestData.query(function(data){
$scope.rd = data;
$timeout(getRestDataFromServer, 2000);
});
})();
}
//EDIT Я нашел решение, но не уверен, что он хороший. Когда я сохраняю свой тайм-аут в $rootScope, я могу отменить его во всех других контроллерах.
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);
}