Изменение состояния без изменения истории браузера в angular ui-router
Предположим, что у нас есть такая логика:
- Из состояния A перейдите в состояние B.
- Когда мы приходим в состояние B, приложение всегда перенаправляет нас в состояние C, вызывая
$state.go(stateC)
- Теперь мы находимся в состоянии C
Мой вопрос заключается в том, как вернуться в состояние A из состояния C (учитывая, что состояние A может быть любым состоянием, которое мы не знаем во время выполнения, то есть пользователь может получить доступ к состоянию B из любых других состояний)
Ответы
Ответ 1
Используйте параметр location
со значением "replace"...
$state.go(stateC, null, {
location: 'replace'
})
См. https://angular-ui.github.io/ui-router/site/#/api/ui.router.state.$state#methods_go
location - {boolean = true | string =} - Если true
обновит URL-адрес в строке местоположения, если false
не будет. Если строка должна быть "replace"
, которая обновит URL-адрес, а также заменит последнюю историю записи.
Ответ 2
Вы можете отслеживать посещаемые состояния в службе, а затем просто вызвать $state.go в предыдущем состоянии.
Вы можете наблюдать изменения состояния так:
$rootScope.$on('$stateChangeStart',
function(event, toState, toParams, fromState, fromParams){
// add fromState to history
});
Как $смотреть изменение состояния $stateProvider в AngularJS?