Backbone.js:如何利用router.navigate来操纵浏览器历史记录?

时间:2012-12-09 21:01:11

标签: backbone.js pushstate

我写的内容类似于包含几个步骤的注册过程,我想让它成为一个单页的系统,所以经过一些研究Backbone.js是我的选择。

每次用户完成当前步骤时,他们将点击我创建的NEXT按钮,并使用router.navigate方法更新网址,以及加载下一页的内容并使用javascript进行一些奇特的转换

结果是,URL被更新,页面未刷新,从而提供流畅的用户体验。但是,当用户单击浏览器的后退按钮时,URL会更新为上一步的URL,但内容保持不变。我的问题是通过什么方式我可以捕获这样的事件并且当前加载上一步的内容并将其呈现给用户?或者甚至更好,我可以依靠浏览器缓存加载以前加载的页面吗?

编辑:特别是,我正在尝试this article中提到的内容。

1 个答案:

答案 0 :(得分:1)

您不应该使用route.navigate,而是让路由器根据当前路由决定显示哪种表单。

例如:

您当前注册流程中的链接:

<a href="#form/2" ... 

在路由器定义中:

routes:{
  "form/:formNumber" : "gotoForm"
},

gotoForm:function(formNumber){
 // the code to display the correct form for the current url based on formNumber
}

然后使用Backbone.history.start()来引导路由