2015-10-08 2 views
1

Текущая ситуация:AngularJS сохранило состояние с помощью истории URL браузера

Пользователь запрашивает http://localhost/#!/list/789 (все товары в категории ид = 789)

сервер отправляет обратно index.jsp, AngularJS материал в index.jsp прогонов, ngRoute видит "/ #!/список/789", AngularJS получает шаблон, ProductListController работает, делает запрос GET, получает JSON форматированный список продуктов

URL в адресной строке браузера изменений в http://localhost/list/789

На этой странице списка продуктов пользователь может фильтровать продукты на странице, например. показать все продукты в этом ценовом диапазоне, показать продукты, которые имеют этот цвет, от этого бренда и т. д., все сделано с помощью JavaScript
Проблема в том, что пользователь нажимает на страницу продукта, например. localhost/show/89 и вернуться назад, нажав кнопку «Назад», они снова будут видеть страницу списка продуктов, но все их фильтры исчезнут

Возможно ли каким-то образом сохранить «состояние», чтобы при возвращении пользователя , все их фильтры будут повторно применены?
Я предполагаю, что это имеет какое-то отношение к истории pushState, но как это сделать в AngularJS, возможно ли это?

Я думаю, что это должно быть возможно, потому что в текущей ситуации, когда URL-адрес в адресной строке браузера изменяется (от localhost/#!/List/789 до localhost/list/789), браузер не выдаёт никаких запросов к серверу
Так как пользователь применяет фильтры, URL-адрес может быть изменен на localhost/#!/list/789? price = 50-100 & name = a или localhost/#!/list789 # цена: 50-100 , name = a, но запросы не отправляются на сервер
Пользователь переходит на страницу продукта, обращается назад, они прибудут в localhost/#!/list/789? price = 50-100 & name = a вместо localhost/#!/list/789

Как сделать d o это в AngularJS?

Я знаю этих решений:
- LocalStorage
- печенье, т.е. пользователь каждый раз применяет фильтр, браузер уведомляет сервер (Эй, пользователь просто применяется цена фильтра), сервер сохраняет, что в сессии
Однако поддержание состояние в истории браузера является предпочтительным, так как применяется каждый фильтр, новый URL создается, что делает пользователь в состоянии отменить каждый фильтр приложений

+0

См Http: // StackOverflow. ком/вопросы/22247294/как-делать-я-получить-обратно кнопки к -работа-с-ан-angularjs-UI-маршрутизатор-государственной машиной –

ответ