У меня есть приложение, которое я создаю, и имеет около 6 разных видов, каждый со своим собственным контроллером.
Я хочу автоматически переключаться каждый вид через х секунд, а затем в конце вернуться к началу.
Я также хочу, чтобы вы могли приостановить таймер, если вы нажмете кнопку паузы.
То, что у меня есть (и я уверен, что есть способ лучше подойти) на данный момент, является таймером в каждом контроллере, который останавливается после изменения вида.
$rootScope.homeProm = $timeout(function(){
$location.path('page2');
},12000);
$scope.$on('$locationChangeStart', function() {
$timeout.cancel(homeProm);
});
Будет ли использование состояний лучше в этом сценарии? И лучше ли использовать сервис для таймера?
У меня будет контроллер оболочки:
<div ng-controller="WrapperController">
<div ng-view=""></div>
<div>
Каждый вид будет иметь свой собственный контроллер, а WrapperController будет обрабатывать изменение вида и остановки. У меня не будет дублирующего кода в каждом контроллере.
Это то, что я бы сделал в первую очередь, возможно, есть еще одно лучшее решение.
Вы можете использовать $destroy
of $scope
, что будет иметь большее значение. Поскольку контроллер получает регистрацию с DOM, он вызывает ваш нужный код. В основном этот блок используется для очистки кода.
$scope.$on('$destroy', function() {
$timeout.cancel(homeProm);
});