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


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

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

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

www.myurl.com/#/Items

to:

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

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

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

1 70

1 ответ:

в своем $routeProvider конфигурация reloadOnSearch в false:

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

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

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