У меня есть обратный вызов изменения состояния, который перенаправляется в одно и то же состояние.
$rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {
if (toState.name != 'wsConnect') {
console.log("change path!!");
$location.path('/connect');
}
});
Он отлично работает с самого начала, когда пользователь открывает новую вкладку и вводит маршрут с любым якорем url. Пользователь видит вид из обратного вызова, но если пользователь вручную меняет привязку и хиты, тогда обратный вызов работает с половинным якорным значением, а пользователь видит вид своего маршрута не от якоря.
Если вы перезагрузите страницу, "ошибка" исчезнет.
Я нашел обходное решение:
if (toState.name != 'wsConnect') {
console.log("change path!!");
$interval(function () {
$state.go('wsConnect');
$location.path('/connect');
}, 1, 1);
}
Возможно, рассмотрите возможность использования $viewContentLoading
который запускается после начала загрузки представления перед тем, как DOM будет отображаться. "$ RootScope" транслирует событие.
https://github.com/angular-ui/ui-router/wiki#view-load-events