Backbone.history.navigate不保存参数

时间:2016-09-06 13:50:57

标签: javascript backbone.js backbone-routing

我有一些路线:

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

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

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

如果我按下我的链接,我会访问网址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有问题,因为我有网址:site.com/#!/page,并且未定义ID。

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

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

1 个答案:

答案 0 :(得分:0)

骨干路由使用片段就像任何其他锚链接一样。您只需要使用href,因为它可以使用:

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

点击此类链接时,无需将trigger设置为true,因为它是默认行为。 Backbone侦听hashchangepopstate事件,并在必要时触发路由。

此外,routes哈希可以简化:

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

请参阅routes documentation

  

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