2016-08-01 60 views
0

是否可以将参数传递给未记录在浏览器历史记录中的路由?aurelia路由器 - 传递一次参数(参数不会记录在浏览器历史记录中)

我要求

  • 其中一个页面有保存其先前的信息(当用户导航离开),我感到存储在独立的视图模型中的数据实现。

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

但是,如果他们点击站点其他地方的某个特定按钮,则用户希望导航到此页面,但让它刷新其状态。 我遇到的问题是,假设他们点击那个按钮,它关系到

/ThePageInQuestion?refresh=true

,他们导航移开,然后单击后退按钮时,浏览器将回到它的历史,这将是网址上面和页面将刷新自己。当然,这不是它应该如何工作的,因为当他们点击后退按钮时,它应该将保存的设置拿回来。我需要一种方法去路由并传递{refresh:true}作为参数,但没有保存在浏览器的历史记录中。

这是可能与aurelia路由器?

如果不是,也许我可以手动操纵浏览器的历史记录,以从url中删除这个?

在此先感谢。

回答

0

你可以有2个模板,一个缓存内容,一个缓存。
在META标签中使用缓存控件。

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

,或者尝试使用香草JS

history.go(number|url) 
0

这里是我想出了一个解决方案:

​​

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

0

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

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

Aurelia Documentation regarding routing and additional data

Sharing data with a service

+0

不知道你明白的问题(因为我不明白你的答案)。问题不在于如何在视图模型的整个生命周期内存储数据(这就是您听起来像是在回答的问题)。 – pQuestions123

相关问题