2016-04-04 2 views
0

Приложение имеет страницы, X, Y и Z. Таким образом, маршрутизация должна быть следующей. Перейдите на страницу X, а затем выберите некоторые детали, а затем перейдите на страницу Y, а затем выберите более подробную информацию, а затем перейдите к Z. Поэтому я хочу, чтобы после перехода на страницу Z, когда я нажимаю кнопку «Назад», она должна перейти на страницу X, а не на страницу Y. Переходя от Y до Z, я также попытался добавить { location: 'replace' } в $state.go, но это не сработает. Любые идеи о том, как этого достичь?ui-router изменение предыдущего состояния

Благодаря

+0

Простым решением должно быть только 2 состояния, X и Z. Когда вы выбираете некоторые детали на странице X и переходите к Y, вместо перехода в Y с помощью 'ui.router', скройте текущий div и покажите div который имеет содержимое Y. Затем, выбирая дополнительные данные, перейдите к Z, используя 'ui.router'. – AdityaParab

+0

@AdityaParab, мне нужна другая страница' Y' – AbKDs

+0

Вы имеете в виду 'page', поскольку в ней должен быть маршрут? – AdityaParab

ответ

2

Каждый раз, когда вы изменяете состояние, Угловое вызовет событие называется $stateChangeStart, вы можете использовать это в ваших интересах.

В вашем app.run, сделать

app.run(function($rootScope,$state){ 
    $rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState, fromParams) { 
     //Check if you're going from Z to Y 
     if(fromState.name === 'Z' && toState.name === 'Y'){ 
      // if so, first stop the default behavior 
      event.preventDefault(); 
      // then navigate to X 
      $state.go('X'); 
     } 
    }); 
}); 

браузер кнопку назад, по существу вызывает то же событие, так что ваша проблема будет решена с этим.

+0

это сработало благодаря человеку :) – AbKDs

0

делать как этот дать свое состояние в $ state.go как ..: $state.go('y')

+0

Это правильно, как это сделать на кнопку назад браузера – AbKDs

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