Угловой URL-адрес браузера для отражения с помощью параметров поиска, проходящих через http-запрос

0

В моем приложении для одной страницы есть страница поиска с множеством фильтров. Он работает, поскольку REST api вызывает каждый запрос на поиск. Мое требование - обновить URL-адрес браузера при каждом поиске, но мой контроллер не должен обновляться. Это мой настоящий url http://www.example.com/#/search_result

При каждом запросе на поиск должен меняться URL.

http://www.example.com/#/search_result/?keyword=tagar

http://www.example.com/#/search_result/?keyword=tagar&stage=[70]&value_from=0

http://www.example.com/#/search_result/?keyword=city=[6003]&country=[223]&keyword=dubai&stage=[10,20]&value_from=0

Как мудрый, будет много возможностей.

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

Любая помощь пожалуйста.

  • 0
    Для ввода прямого URL используйте $ routeProvider с $ routeParams. Разбор запроса, вызов службы REST и загрузка контроллера. После этого при каждом изменении запроса обновляйте URL вашего браузера с помощью $ location.path ('/ newValue')
Теги:

1 ответ

0

Поскольку вы использовали тег 'angular-ui-router', вы могли бы определить свой URL-адрес, используя api-urlMatcher. http://angular-ui.github.io/ui-router/site/#/api/ui.router.util.type:UrlMatcher

Это означает, что государство не изменится. Только параметры состояния будут :)

ОБНОВЛЕНИЕ: Это немного уродливо, но оно должно работать :) Моя рекомендация заключается в том, что вы помещаете это в директиву. Имейте в виду, что вы получаете тугое соединение таким образом.

$rootScope.$on('$stateChangeStart', function (ev, toState, toParams, fromState, fromParams) { if(fromState.name === 'search-result' && toState.name === 'search-result'){ ev.preventDefault();//add the logic to update the results based on toParams } });

  • 0
    Можете ли вы помочь мне с подстановочным знаком, который будет использоваться в $ routProvider, который может принять любой URL, как указано выше. Мой текущий код похож на $ routeProvider.when ('/ search_result', {... ....
  • 0
    ui-router предлагает опцию «reloadOnSearch: false» для состояний, которая отключает переходы. Дело в том, что вы не можете инициировать вызов к бэкэнду, если контроллер не обновлен (если есть логика для связи). Если вы не хотите обновлять контроллер, вы можете добавить обработчик в '$ stateChangeStart' и поместить вызов туда. Я отредактирую пост с деталями.

Ещё вопросы

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