Я использую router-ui для своей угловой одиночной страницы
Я слышу событие $stateChangeSuccess для сохранения в localStorage текущего состояния и его параметров:
$scope.$on('$stateChangeSuccess', function(event, toState) {
localStorage.lastState = toState.name;
localStorage.lastStateParams = JSON.stringify($stateParams);
});
Мой вопрос: когда клиент открывает веб-приложение, я хочу восстановить свое личное последнее состояние, но где я могу поместить этот код?
$state.go(localStorage.lastState, JSON.parse(localStorage.lastStateParams));
// ОБНОВЛЕНИЕ На самом деле я поместил этот код в событие $stateChangeSuccess следующим образом:
$scope.$on('$stateChangeSuccess', function(event, toState) {
if (toState.name !== 'welcome') {
localStorage.lastState = toState.name;
localStorage.lastStateParams = JSON.stringify($stateParams);
}
if (toState.name !== localStorage.lastState) {
$state.go(localStorage.lastState, JSON.parse(localStorage.lastStateParams));
}
});
Проблема с этим решением заключается в том, что процесс открытия приложения выглядит следующим образом:
- localhost (пользователь открывает приложение)
- localhost/#/welcome (потому что процедура $urlRouterProvider.otherwise('/welcome') выполняется до события $stateChangeSuccess)
- а затем: localhost/#/articles/423 (в событии $stateChangeSuccess)
Так что я уверен, что делаю плохо, кто-то знает хороший метод?
Спасибо большое,