2015-06-21 3 views
2

В моем угловом приложении, у меня есть страница 1 и 2. Page

Page 1 основном домашняя страница с кнопкой ссылки на страницу 2.

Страница 1 имеет угловое приложение под названием Page1App и контроллер под названием Page1Ctrl. Page 2 имеет угловое приложение под названием Page 2App и контроллер под названием Page2Ctrl.

Page1App имеет Page2App как зависимость.

angular.module('Page1App', ['Page2App']); 

В Page 2, есть таймер, который работает как таймер в this JSFiddle (код дублируется ниже)

$scope.nextPic = function() { 
     $timeout.cancel(picTimeout) 
     if (++$scope.picIndex >= $scope.pics.length) $scope.picIndex=0 
     picTimeout = $timeout($scope.nextPic, 2000) 
    } 

    $scope.prevPic = function() { 
     $timeout.cancel(picTimeout) 
     if (--$scope.picIndex < 0) $scope.picIndex=$scope.pics.length-1 
     picTimeout = $timeout($scope.nextPic, 2000) 
    } 
    picTimeout = $timeout($scope.nextPic, 2000) 

Проблема заключается в том, когда я вернусь в Страница 1 из Page 2, таймер продолжает работать в фоновом режиме и иногда вызывает всплывающее окно alert - это нормально, если вы находитесь на странице 2, но не в порядке, если вы уже покинули страницу. Page 2

Как сделать все, начиная с остановки страницы, когда пользователь уйдет?

ответ

3

Вы можете прослушивать приемник событий и уничтожать тайм-аут.

для Ex:

$scope.$on('$destroy', function() { 
    $timeout.cancel(picTimeout); 
}); 

Проверка DOC для $destroy событие областей.

+0

cool Я никогда не слышал о '$ destroy' ... и я забыл о' $ scope. $ On' Я попробую. Большое спасибо – CodyBugstein

+0

oky дать ему попробовать и обновить, если он работает или нет .. :) cheerz –

+0

где разместить этот код? Где-нибудь в контроллере? – CodyBugstein