Во-первых, я думаю, что общая проблема здесь в том, что AngularJS все еще не имеет разумного, передового способа «перезапуска» приложения и всех его компонентов. Пока что лучшей практикой является установка пути к представлению «по умолчанию», а затем перезагрузка окна. Мы делаем это в состоянии / logout, как показано здесь:
$stateProvider.state('logout', {
onEnter: function($state, $window, store) {
//Remove any session variables
store.remove('varA');
store.remove('varB');
//"Logout" the user
$state.go('login');
$window.location.reload();
}
})
Однако это плохой пользовательский опыт. Пользователь действительно может видеть изменение представления и сдвиг компонентов на странице перед перезагрузкой окна. В целом это кажется очень глючным.
Первоначально мы не включали $state.go('login')
, и мы не получали странного впечатления от изменения представления перед выходом из системы. Однако, когда мы начали использовать обработчики состояния $, такие как $rootScope.$on('$stateChangeStart', function (event, toState, toParams)
, мы заметили, что toState
не сбрасывается после перезагрузки окна. Таким образом, $stateChangeStart
сработает после перезагрузки, а toState
будет по-прежнему настроен на то представление, в котором пользователь находился до вызова /logout
. Это не настоящий сброс приложения!
Возможное решение: я думаю, что все это можно решить, если бы существовал способ «сбросить $ state» без использования метода $state.go()
... вместо этого что-то происходит за кулисами.
state.transitionTo()
и его различными вариантами. Кроме того,$state.reload()
angular-ui. github.io/ui-router/site/#/api/ - person wrshawn   schedule 26.01.2016window.history.go(-window.history.length-1)
? - person NoodleOfDeath   schedule 29.01.2020