【发布时间】:2016-01-27 08:15:54
【问题描述】:
使用 Iron 路由器版本 0.9.4 如何在不更改浏览器历史记录的情况下更新 URL 查询参数?
我有一堆可以更新 URL 查询参数的选择框。在某些情况下,我想在不向 window.history 中添加额外条目的情况下更新 URL。很多模板都依赖于 Router.current().params 反应变量,所以我需要在更改路由时更新它。
【问题讨论】:
标签: meteor iron-router
使用 Iron 路由器版本 0.9.4 如何在不更改浏览器历史记录的情况下更新 URL 查询参数?
我有一堆可以更新 URL 查询参数的选择框。在某些情况下,我想在不向 window.history 中添加额外条目的情况下更新 URL。很多模板都依赖于 Router.current().params 反应变量,所以我需要在更改路由时更新它。
【问题讨论】:
标签: meteor iron-router
Iron Router 在 Router.go 函数中有一个可选参数,您可以将其传入 {replaceState:true} 。这将更新 URL,而不会将 URL 更改存储在窗口的历史记录中。
这适用于 Iron Router 0.9.4
var path = Router.path('myRoute',{_id: myId}, {query: myParams});
Router.go(path, {replaceState: true});
如果您使用的是较新版本的 Iron Router,参数的顺序可能会发生一些变化,根据 github issue 这将是新的顺序:
Router.go(path, {}, {replaceState:true});
【讨论】:
您可以使用原生 JavaScript:
window.history.replaceState(yourNewUrl);
这里有一些some documentation。由于它是一项现代功能,如果您想支持旧版浏览器,您可以use a polyfill。
【讨论】: