2013-09-09 3 views
1

У меня проблема. Я создаю приложение Angular, я использую угловой ui-маршрутизатор.AngularJS и ui.route плавная навигация

Я хочу, чтобы остановить навигацию с одной страницы на другую, пока я не бегаю Dóm анимации

Я знаю, у меня есть onStateSuccess и onStateStart, но я не знаю, как остановить не собирается этого состояния до Я запускал анимацию.

Я знаю, что могу перемещаться с $state.go('localhost'), но я ищу лучший подход для остановки и возобновления события.

Любые идеи?


EDIT

Я вижу, что я могу остановить событие на начало смены, есть способ, чтобы возобновить его после того, как я провел несколько функций?

$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams){ 
      console.log(event); 
      console.log(toState); 
      console.log(toParams); 
      console.log(fromState); 
      console.log(fromParams); 
      event.preventDefault(); 

      // transitionTo() promise will be rejected with 
      // a 'transition prevented' error 
     }); 

ответ

2

На $stateChangeStart проверок, чтобы увидеть, если вы в настоящее время анимации (с использованием флага). Если вы этого не сделаете, установите флаг, указывающий, что вы анимируете. Если вы анимируете, нажмите новый запрошенный вид в массив. Возврат false отменяет запрос.

На $stateChangeSuccess установите для анимирующего флага значение false и проверьте упомянутый выше массив для запрошенных просмотров, если у него есть что-то $state.go().

UPDATE

В начале анимации установить флаг в истинны и использовать, чтобы предотвратить страницу от изменения, как указано выше. Установите тайм-аут того, как долго длится ваша самая длинная анимация. Тайм-аут установил бы флаг анимации в значение false и инициировал бы изменение реального состояния.

+0

Это звуковое мышление :) ... Спасибо, я попробую! Я всегда ищу сложные способы сделать мою жизнь труднее :). Это просто и элегантно! –

+0

Я предположил, что анимация исходила из переходов между страницами. После повторного чтения отредактированных вывесок это звучит так, будто анимация происходит откуда-то еще. Если это так, дайте мне знать, чтобы я мог обновить свой ответ. – TheSharpieOne

+0

О, да, Анимации происходят откуда-то еще, я хочу «МОЛИТВАТЬ» контент на ТЕКУЩЕЙ СТРАНИЦЕ, чтобы он выглядел как контент на СТРАНИЦЕ, а затем выполнял переход. Это звучит странно, но на домашней странице у меня есть информация из разных категорий, вы щелкаете одним из этих блоков, блок становится большим и предполагает, что у меня есть стиль, на котором у меня есть этот единственный контент, запутанный, но я думаю, что он может сделайте для плавной навигации. –

Смежные вопросы