2016-09-06 50 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)中的 進行選擇。