2014-01-28 4 views
4

У меня есть route, который должен resolve ресурс на стороне сервера. Этот ресурс запрашивает аутентификацию. Поэтому я показываю всплывающее окно формы входа, которое можно отменить. При отмене маршрута/разрешения получает rejected и $routeChangeError срабатывает правильно.

Проблема заключается в том, что у меня теперь есть неудавшееся местоположение/URL-адрес в адресной строке и ненужная запись истории.

Как заменить текущий адрес местоположения на последний без перезагрузки? И как удалить текущую запись истории после смены маршрута?

Редактировать: Я использую angular-http-auth. Вот моя маршрутизация:

/home>/item (должен решить ресурс, который требует проверки подлинности, когда не вошли в форму Войти всплывающее окно открывается, который отменяемый)

Когда я отменить проверку подлинности на $ routeChangeError получает и я все еще на /home страница из-за /item никогда не отображалась. Теперь адресная строка показывает неправильный URL: /item

ответ

2

Вам просто нужно отправить их назад на один шаг в вашей истории. Не беспокойтесь об истории записи будучи там, он будет перезаписан, когда они перейти к следующей вещи:

app.run(function($rootScope, $window) { 
    $rootScope.$on('$routeChangeError', function() { 
     $window.history.back(); 
    }); 
}); 

And here's a demo Plunk

+0

Спасибо, но перезагружает страницу я уже/еще seeing.I используйте angular-http-auth и откройте всплывающее окно входа, когда ресурс на маршруте (с разрешением) требует аутентификации. Когда я отменяю этот логин, я вижу нужную страницу, но неправильное местоположение. С $ location.replace() я могу избавиться от этой ненужной записи истории при следующем изменении маршрута. Но это не решение. Я должен изменить $ location на $ routeChangeError, не перезагружая одну и ту же страницу. – tagomago

+0

Тогда вам нужно предоставить больше кода. Я думал, что у меня есть идея, что вам нужно делать, но сейчас я понятия не имею, что вы пытаетесь. Кроме того, я бы рекомендовал пометить ваш вопрос с помощью «angular-http-auth» или того, что вы используете, и, возможно, посылки ссылки на автора модуля. –

+0

Мне, к сожалению, не разрешено открывать новый тег «angular-http-auth». – tagomago

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