2012-01-29 10 views
7

ハッシュハッシュ以外の方法で結合する方法はありますか?のURLはBackbone.jsアプリケーションにありますか?Backbone.jsでハッシュとハッシュ以外のURLを結合する

Backbone.history.start({pushState: true})を設定します。ユーザーがリンクをクリックすると、サーバーからJSONデータを取得し、ページを更新し、からexample.com/moravskoslezsky/kampan/mf/にブラウザのURLを変更するためにBackbone.history.navigateを呼び出します。
ブラウザからURLをコピーして2番目のタブで開くと、同じページが表示されます(このように更新されたすべてのページにはサーバー上の対応するページがあります)。これはまさに私が欲しいものです。

しかし、今、私は問題を抱えている...

私はあまりにもページ上のいくつかの<select>を持っています。ユーザーが値を変更すると、ページ上で動的な変更が加えられます(サーバーからJSONを取得せず、更新はクライアント側でのみ行われます)。 <select>に変更URLを入力してください。たとえば、example.com/moravskoslezsky/kampan/mf/#state1になります(誰かがこのURLを送信すると、相手側は同じページが送信者と同じ状態になります)。

Backbone.jsでやり方を見つけることができませんでした。 pushState: trueBackbone.historyに設定した場合、Routerはハッシュタグを無視します。
pushState: falseと設定すると、上記の最初の段落で説明したようにURLを設定できません。

ありがとうございます。 Backbone.history.navigate("/foo/bar#fragment")

しかし、私はすなわちpushstateをサポートしていないので、それは、良いアイデアだとは思わないので、バックボーンは、(IEで)ハッシュ強打のURLを使用するつもりです:

+0

あなたが問題を解決することができましたか?私は全く同じ問題に直面しています。 pushStateがtrueの場合、私はハッシュ部分を含むURLをルートできません。ハッシュはちょうど完全に無視されます。 – Fedor

答えて

2

あなたは呼び出すことができます。 Backbone.history.navigate("/foo/bar?foo=bar", true)最近のブラウザで次のようになります:http://domain.tld/foo/bar?foo=barとIEで:

たぶん、あなたは、クエリ文字列を使用することができhttp://domain.tld#/foo/bar?foo=bar

関連する問題