【问题标题】:Ember router resume on reloadEmber 路由器在重新加载时恢复
【发布时间】:2012-10-10 14:12:43
【问题描述】:

我有一个基于 ember.js 路由器的应用程序,有一个有趣的怪癖。由于路由器文档相当稀疏,我不确定这是 feature 还是 bug 还是我在其他地方的某些代码的意外结果。

当我在浏览器中重新加载包含应用程序的页面时,应用程序会跳转到我上次所在的路径。我将路由序列化为哈希。所以一个例子是我在app.html#/users/1/details 上,我删除了哈希并添加了一个随机查询变量app.html?reload=randomnumber 并加载了页面。 ember 加载后,它会将#/users/1/details 添加回该地址。

这是 ember 的功能/后果,还是我写的一些垃圾。到目前为止,我还没有发现我写的任何可能导致此问题的内容。

如果是 ember 功能,有没有办法禁用它?

【问题讨论】:

    标签: javascript ember.js ember-router


    【解决方案1】:

    你到底在说什么“reload”?

    当使用哈希对路由进行序列化时,Ember 无法在浏览器中保留任何状态。与 Ember 没什么关系:重新加载页面时,整个状态都丢失了,并根据请求的 url 返回的内容初始化进行重置。

    尽管如此,当哈希值存在时,Ember 会使用它来重置路由器的状态。

    所以我怀疑你仍在重新加载 URL .../app.html#/users/1/details。

    您是否在开发者工具(或同等工具)中查看了您的网络历史记录?

    第一项应该是一个GET请求,它会指出有效的请求URL和哈希(如果有)。

    【讨论】:

    • 谢谢 我不确定 Ember 是否使用了任何较新的浏览器的持久性功能来保存其状态或类似的废话。哈希字符串没有在 get 请求中发送,但我认为 Chrome 浏览器在页面加载时恢复它是有罪的,尽管我需要进行更多测试才能确认。一定是假设我想去以前的锚点。仅供参考,我的刷新方法类似于window.location = window.location.pathname + '?reload' + App.generateRandVal()。
    猜你喜欢
    • 2019-01-18
    • 2017-04-15
    • 2017-10-24
    • 1970-01-01
    • 1970-01-01
    • 2016-12-05
    • 2013-01-03
    • 2019-08-26
    • 1970-01-01
    相关资源
    最近更新 更多