aurelia路由器-传递一次参数(参数不会记录在浏览器历史记录中)
aurelia router - pass one time param (param does not get recorded in browser history)
是否可以将参数传递给未记录在浏览器历史记录中的路由
我有要求
-
页面必须保存其以前的信息(当用户导航离开时),我通过将数据存储在单独的视图模型中来实现这一点。
-
其中,如果用户点击浏览器的历史按钮,则页面应使用保存的数据重新加载。
但是,如果用户在网站的其他地方单击特定按钮,则用户希望导航到此页面,但要刷新其状态。我遇到的问题是,假设他们点击那个按钮,它就会进入
/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关于路由和附加数据的文档
与服务共享数据
- 用javascript记录传递给回调的参数的约定是什么
- 记录中间功能可选参数
- JavaScript 函数,用于使用具有多个参数的记录集查询 MS Access DB
- 如何控制台记录我传递到此测试函数中的每个参数
- 将对象数组记录为 JSDoc 中回调函数的参数
- 如何在函数参数中使用循环并将结果记录到控制台
- 使用restangular在angularJs上基于url参数检索记录
- 将display标记表列中的参数传递为隐藏,始终获取第一条记录的值
- 将状态添加到特定搜索参数的历史记录中
- 使用Google闭包编译器记录回调参数
- 如何在JSDoc中将对象数组记录为参数
- 通过id和其他参数查找Ember-data记录
- 当作为参数传递给setTimeout回调函数时,全局变量被记录为未定义
- 当我推送一个新的URL到主干.历史记录,查询参数保留
- 猫鼬查找具有多个条件的记录并检查请求参数是否为空
- 如何记录具有已知参数类型的可变长度的参数列表
- aurelia路由器-传递一次参数(参数不会记录在浏览器历史记录中)
- 如何在Ember中通过id和查询参数找到记录
- grocJavaScriptdocumentor-用于记录所有子目录的参数
- 如何记录JsDoc中具有多个参数顺序选项的函数