2015-10-27 1 views
3

Использование версии для железного маршрутизатора 0.9.4 Как обновить параметры запроса URL без изменения истории браузера?Iron Router, изменив URL-адрес без изменения истории браузера.

У меня есть куча блоков выбора, которые могут обновлять параметры запроса URL. В некоторых случаях я хотел бы обновить URL-адрес без добавления дополнительной записи в window.history. Многие шаблоны зависят от переменной Router.current(). Params реактивной переменной, поэтому мне нужно обновить ее, а также при изменении маршрута.

ответ

1

Вы можете использовать ванильный JavaScript:

window.history.replaceState(yourNewUrl); 

Вот некоторые some documentation. Поскольку это современная функция, если вы хотите поддерживать старые браузеры, вы можете use a polyfill.

+0

спасибо, как правило, это будет работать, но в моем случае, у меня есть несколько шаблонов, которые зависят от Router.current() Params, поэтому мне нужно также обновить Params маршрутизатора.. – looshi

5

Iron Router имеет необязательный параметр в функции Router.go, который вы можете передать в {replaceState:true}. Это обновит URL-адрес без сохранения изменения URL-адреса в истории окна.

Это работает в железном Router 0.9.4

var path = Router.path('myRoute',{_id: myId}, {query: myParams}); 
Router.go(path, {replaceState: true}); 

Если вы находитесь на новую версию Iron маршрутизатора, порядок аргументов, вероятно, немного изменился, в соответствии с этим github issue это будет новым заказ:

Router.go(path, {}, {replaceState:true});