2012-12-09 73 views
0

我写的东西就像一个包含多个步骤的注册过程,我想让它成为一个类似单页的系统,所以在学习了一些Backbone.js之后,我就是我的选择。Backbone.js:如何利用router.navigate来操纵浏览器历史记录?

每次用户完成当前步骤时,他们都会点击我创建的下一个按钮,然后使用router.navigate方法更新网址,并加载下一页的内容并进行一些花哨的转换JavaScript的。

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

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

回答

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()来引导路由

+0

非常感谢你的回复,但我真的以一种我不喜欢的方式来做这件事蚂蚁的存在标签。特别是我试图在这篇文章中的东西:http://artsy.github.com/blog/2012/06/25/replacing-hashbang-routes-with-pushstate/ –

+0

经过一些工作,我想我已经想通了它出来了,我需要调用导航触发器:true来触发路由器的功能,更新内容。没有哈希标签! –