【发布时间】:2013-07-16 14:06:50
【问题描述】:
好的,我已经用谷歌搜索和搜索,但找不到与我的实际问题相关的任何内容。
基本上我有一个简单的路由器,其中定义了一些路由,如果直接调用,所有这些路由都可以由服务器直接呈现。
所以主干历史是这样调用的。
Backbone.history.start({
'pushState': true,
'silent': true
});
然后我有一个简单的非常简单的导航
this.navigate($(event.currentTarget).attr('href'), {
'trigger': true
});
这一切正常,除了一个缺陷。
假设您从我没有为其定义主干路由的站点的主页开始,然后单击站点上使用主干路由器的几个链接,您将被路由到正确的页面,一切正常很好,但是当您单击浏览器的后退按钮返回主页时,您最终会看到第一个主干路由的内容,而不是实际主页的内容。
所以我意识到我需要存储初始页面内容,以便一旦我检测到我回到与路由器中的路由不匹配的初始页面,我就可以将它们重新插入页面,然后从那里我需要在我的页面的存储版本中重新加载。
所以我想知道这听起来是否正确,或者我是否走错了路,主干是否也能提供任何帮助解决我刚刚错过的这种情况?而且我不可能是唯一一个尝试这样做的人,那么其他人是如何解决这个问题的?
(最初我以为我的代码确实有问题,而不是这个根本问题,所以我仍然想问这个问题,以了解其他人是如何做到的)
【问题讨论】:
-
我现在正在处理这个问题,想知道你是否想出了任何解决方案。我正在考虑创建一个特殊的“刷新”路由,在这些情况下服务器会渲染它们。
-
这对我来说听起来不错。如果我想出更好的方法,我会告诉你的。我目前对其进行了重新设计,以便没有可加载主干页面的页面首先不会使用主干。它不太理想,所以我仍在寻找更好的解决方案,但至少我可以继续前进,稍后再回来。
-
是的,我最终在客户端渲染页面,这有点令人沮丧和奇怪的问题。我想这可能与路由器的
root有关。也许我每个root需要多个路由器(在我的情况下,大多数应用程序是服务器端呈现的,但一些流程是客户端的,需要后退按钮/URL 支持)
标签: backbone.js