aurelia路由器-传递一次参数(参数不会记录在浏览器历史记录中)

aurelia router - pass one time param (param does not get recorded in browser history)

本文关键字:参数 记录 路由器 浏览器 历史 aurelia 一次      更新时间:2023-09-26

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

我有要求

  • 页面必须保存其以前的信息(当用户导航离开时),我通过将数据存储在单独的视图模型中来实现这一点。

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

但是,如果用户在网站的其他地方单击特定按钮,则用户希望导航到此页面,但要刷新其状态。我遇到的问题是,假设他们点击那个按钮,它就会进入

/ThePageInQuestion?refresh=true

然后他们导航离开并单击后退按钮,浏览器将返回到其历史记录,即上面的url,页面将自行刷新。当然,这不是应该的工作方式,因为当他们点击后退按钮时,应该会将保存的设置带回来。我需要一种方法去路由并将{refresh:true}作为参数传递,但不将其保存在浏览器的历史记录中。

使用aurelia路由器可以做到这一点吗

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

提前谢谢。

您可以有两个模板,一个有缓存内容,另一个没有缓存
使用META标记中的缓存控件。

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

或者尝试使用香草js

history.go(number|url)

这是我提出的解决方案:

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

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

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

这里有两个链接应该可以帮助你:

Aurelia关于路由和附加数据的文档

与服务共享数据