2016-09-06 30 views
1

我有一些路线:Backbone.history.navigate不保存参数

routes: { 
    "": "main", 
    "!/": "main", 
    "!/page": "page", 
    "!/page/:id": "page" 
}, 

然后,我有一些HTML链接,例如:

<a href="site.com/#!/page/3">my link</a> 

如果我按我的链接我访问到url site.com/#!/page/3,对我来说没关系。但是,如果我有这个链接:

<a href="javascript:void(0);" onclick="Backbone.history.navigate('!/page/3', {trigger:true});">my link</a> 

我访问网址site.com/#!/page/(不id=3)。 Id仍然定义。但是在重新加载页面后,我的ID有问题,因为我有url:site.com/#!/page,ID未定义。

如何使用以下链接标记在Backbone中导航?

<a href="javascript:void(0);" onclick="Backbone.history.navigate('!/page/3', {trigger:true});">my link</a> 

回答

0

骨干路由使用片段就像任何其他锚链接会。你只需要使用href,因为它是假设使用:

<a href="#!/page/3">my link</a> 

当点击这样一个链接,就没有必要设置trigger为真,因为它是默认的行为。主干监听hashchangepopstate事件,并在必要时触发路由。


此外,routes哈希可以简化:

routes: { 
    "*anything": "main", 
    "!/page(/:id)": "page" 
}, 

routes documentation

路由可以包含参数部分,:param,它们与斜杠之间的单个URL 组件匹配;和splat部分*splat,它们可以匹配任何URL组件的任何 。部分路线可通过围绕在括号(/:optional)中的 进行选择。