2012-04-25 10 views
7

:最近までBackbone.Routerで標準URLを使用するには? <a href="http://documentcloud.github.com/backbone/#Router">Backbone.js</a>ページによる

は、ハッシュフラグメント(#page)は、これらの パーマリンクを提供するために使用されたが、歴史のAPIの到着と、それは(標準URLを使用するようになりました ことが可能です/ page)

私は、このルータのルールを追加してみました:

routes: { 
    'test': function() { 
    alert('ok'); } 
} 

をそしてBackbone.history.start({pushState: true, root: '/myroot/'})と呼ばれます。私は私が傍受だったと考えているリンク、要求がなされていない、をクリックすると

$('a[href=test]').click(function(e) { 
    router.navigate('test'); 
    e.preventDefault(); }); 

:私は、リンクのクリックイベントを傍受

<a href="test">test me</a> 

:ように私は私のページのリンクを持っています成功した。 しかし、イベントはトリガーされません。

このHistory APIの仕組みを理解してください。私が間違っていた箇所を指摘してください。

+1

問題。 'router.navigate( 'test'、{trigger:true}); ' – davidshen84

答えて

12

あなたはpushStateをオンにする必要があります。

Backbone.history.start({pushState: true});

あなたのリンクは、サーバーからのフル・リフレッシュを強制するために、サーバーがそのURLの内容で応答しなければならないだろう。いくつかのイントロのためhttp://diveintohtml5.info/history.html

:HTML5のヒストリーAPIの詳細情報については

myRouter.navigate("test");

を:あなたがそのリンクのクリックを傍受し、「テスト」のルートに移動し、あなたのルータに指示する必要があり

バックボーンでpushStateを使用して上のレベルの情報:

http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-1-introducing-pushstate/

http://lostechies.com/derickbailey/2011/09/26/seo-and-accessibility-with-html5-pushstate-part-2-progressive-enhancement-with-backbone-js/

そして、私はそれがこのすべてをカバーしていたプレゼンテーションのビデオ:

http://lostechies.com/derickbailey/2011/10/06/seo-and-accessibility-with-html5-pushstate-part-3-the-video/

お役に立てば幸いです。

+0

ありがとうDerick。私が指摘したように私のコードを更新しました。しかし、それはまだ動作しません。更新された質問をご覧ください。 – davidshen84

1

実際にルーティングイベントをトリガーするには、ナビゲーション呼び出しに{trigger:true}を追加する必要があります。

0

アプリケーションでHTML5 プッシュステートのサポートを使用するよう指定する場合は、Backbone.history.start({pushState: true})を使用してください。 pushStateを使用したいが、それをネイティブにサポートしていないブラウザではフルページのリフレッシュを使用する場合は、をオプションに追加することができます。

PS!アプリケーションがオプション(それ以外の場合は、ナビゲーションが動作しません!)として、根は本当にここで歴史を教えてください、あなたのドメインのルートURL /から提供されていない場合は、次の解決

Backbone.history.start({pushState: true, root: "/public/search/"}) 
関連する問題