Кнопка Назад не работает после location.reload в приложении Angular

0

В моем приложении у меня есть кнопка, которая создает HTTP-обещание, а при успешном обратном вызове обновляет страницу (используя window.location.reload(true)). Однако это добавляет новую копию страницы в историю браузера, поэтому кнопка "Назад" не работает, так как она снова загружает одну и ту же страницу. Любая идея, как я могу это исправить?

Я пытаюсь поддержать ie8, если это возможно.

  • 2
    Почему ты перезагружаешь?
  • 0
    Поскольку кнопка очищает данные на стороне сервера, а затем я перезагружаюсь, чтобы в основном очистить все данные на стороне клиента. Ленивый, но эффективный (до сих пор)
Показать ещё 3 комментария
Теги:
back

2 ответа

0
Лучший ответ

В комментариях к вашему вопросу указывается, что ваш подход не является оптимальным. Вместо полной перезагрузки вы должны иметь функцию, которая обновляет (уже загруженное) представление.

Однако, если вы действительно настаиваете на использовании этого поведения, вы можете использовать location.replace() вместо этого, передав ему текущий URL-адрес. Это существенно перезагрузит страницу без добавления дубликата в стек истории.

0

Смотрите это: https://docs.angularjs.org/guide/$location

Существует специальный метод замены, который можно использовать для указания службе $ location, что в следующий раз, когда служба определения местоположения будет синхронизирована с браузером, последняя запись истории должна быть заменена вместо создания новой. Это полезно, когда вы хотите реализовать перенаправление, которое иначе сломало бы кнопку "Назад" (навигационная панель повторила перенаправление). Чтобы изменить текущий URL-адрес, не создавая новую историю истории браузера, вы можете позвонить:

$location.path('/someNewPath');
$location.replace();
// or you can chain these as: $location.path('/someNewPath').replace();

Примечание. Если вы используете AngularJS, я бы предположил, что вы придерживаетесь использования $ services, предоставляемых вам инфраструктурой, потому что они будут действовать так же, как и их аналогий JavaScript, за исключением того, что они также будут обернуты областью $. любые несоответствия в вашем Угловом приложении.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню