aurelia router - 传递一次param(param不会记录在浏览器历史记录中)

时间:2016-08-01 21:56:52

标签: javascript aurelia aurelia-framework

是否可以将参数传递给未在浏览器历史记录中记录的路线?

我有要求

  • 页面必须保存以前的信息(当用户导航时),我通过将数据存储在单独的视图模型中来完成。

  • 其中,如果用户点击浏览器的历史记录按钮,页面应使用保存的数据重新加载。

但是,如果他们单击站点中其他位置的特定按钮,则用户希望导航到此页面,但让其刷新状态。 我遇到的问题是假设他们点击该按钮然后转到

/ThePageInQuestion?refresh=true

然后他们离开并单击后退按钮,浏览器将返回其历史记录,该历史记录将是上面的URL,页面将自动刷新。当然,这不是它应该如何工作,因为当他们点击后退按钮时,应该将它们带回原位保存的设置。我需要一种方法去路线并将{refresh:true}作为参数传递,但不要将其保存在浏览器的历史记录中。

使用aurelia路由器可以实现吗?

如果没有,也许我可以手动操纵浏览器的历史记录,将其从网址中删除?

提前致谢。

3 个答案:

答案 0 :(得分:0)

您可以拥有2个模板,一个具有缓存内容,另一个具有无缓存 在META标记中使用缓存控制。

<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">

或尝试使用vanilla js

history.go(number|url)

答案 1 :(得分:0)

以下是我提出的解决方案:

attached() {
        window.history.replaceState(null, 'new state name', '/route-minus-one-time-params');
    }

我们的想法是将浏览器历史记录替换为当前页面的路径减去您不希望存储在浏览器历史记录中的任何参数。这必须在附加的回调中完成(如果你尝试在激活的回调中执行此操作,它将无法工作,因为路由器还没有调用window.history.pushState())。

答案 2 :(得分:0)

我已经满足了这个要求但从未使用过refresh=true。在路线更改和后退按钮导航时,通常会再次调用视图模型,以便您可以检查数据并加载它。

以下是两个可以帮助您的链接:

Aurelia Documentation regarding routing and additional data

Sharing data with a service