2016-09-06 13 views
1

を保存しません。私は私のリンクに押した場合は、私がアクセスBackbone.history.navigateは、私はいくつかのルートを持っているパラメータに

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

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

は、それから私は、例えば、いくつかのHTMLリンクを、持っています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なし)URLにアクセスします。 Idはまだ定義されています。しかし、ページの再読み込み後、私はURLがあるので私のIDに問題があります: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> 

このようなリンクをクリックすると、それがデフォルトの動作だとtrueにtriggerを設定する必要はありません。バックボーンは、hashchangeまたはpopstateイベントをリッスンし、必要に応じてルートをトリガーします。


また、routesハッシュを簡略化することができます。

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

routes documentationを参照してください。

ルートはスラッシュとの間の単一のURL 成分と一致するパラメータ部品、:paramを含むことができます。およびスプラット部分*splatが含まれています。これは、すべての 個のURLコンポーネントに一致します。経路の一部は、括弧(/:optional)で囲んで でオプションにすることができます。