Как установить параметр запроса в AngularJS без выполнения маршрута?

My Angular приложение позволяет пользователю загружать элемент, и когда это произойдет, я хотел бы задать строку запроса, содержащую идентификатор элемента, чтобы, если пользователь обновляет страницу (или хочет связать ее), URL уже установлен (там уже есть код, который загружает элемент, если идентификатор присутствует в $routeParams).

Как я могу установить этот параметр запроса, не вызывая маршрут? На странице есть другие вещи, которые получат reset (включая плагин, который должен будет перезагрузить все его данные), если маршрут случится, поэтому важно, чтобы изменился только параметр запроса.

Короче говоря, когда я загружаю элемент 123, все, что я хочу, это то, что URL-адрес изменяется с:

www.myurl.com/#/Элементы

в

www.myurl.com/#/Items? ID = 123

без какой-либо маршрутизации.

Какой лучший способ сделать это?

Ответ 1

В настройке $routeProvider reloadOnSearch выберите значение false:

$routeProvider
  .when('/items', {
    controller: 'ItemsCtrl',
    templateUrl: '/templates/items',
    reloadOnSearch: false
  },
  ...
);

и в вашем контроллере используйте $location.search(), чтобы установить параметр id:

$location.search('id', 123);