バックボーン ルーティングでこの問題に直面しており、調査に十分な時間を費やしたと考えています。
ここでは、/ と /post/:id の 2 つの URL が使用されます。/ ページには、/post/:id を介してさまざまな投稿へのリンクがあります。投稿リンクをクリックすると、投稿ページが読み込まれますが、バックボーンはすぐに URL を / に変更します。これは見栄えが悪いだけでなく、間違ったタイミングでルート ハンドラーをトリガーします。私は特別なことは何もしていません...これが私のコードです:
PostRouter = Backbone.Router.extend({
routes : {
"" : "doHome"
},
initialize : function() {
},
doHome : function() {
// do some stuff before navigating
window.location = "/";
}
})
...
var router = new PostRouter();
Backbone.history.start({ pushState: Modernizr.history });
ここでも、投稿ページがロードされた直後に doHome 関数が呼び出されます。明らかに、これによりサイトはホームページに戻ります。それを防ぐためにwindow.locationへの呼び出しを明らかに削除できますが、URLは依然としてルートURLに更新されますが、これは受け入れられません。
前もって感謝します!
更新 1:
「localhost:808/post/:id」に直接アクセスすると、URL はすぐに「localhost:8080/」に変わります。ただし、プライベート ブラウザー ウィンドウでまったく同じことを行うと、この動作は観察されません。
更新 2:
更新 1 で見つけたことを考えると、私は気が狂い、ゼロから始めました。4 週間の閲覧履歴を消去し (ため息)、ローカル サーバーを停止し、永続的なセッションをすべてクリーンアップし、アプリを再デプロイしました。ああ、それは働いた!とは言っても、正確に何が起こっているのか、それを解決する方法を説明するのに役立たないので、これを解決策としてリストしていません. さらに、これが私のサイトのユーザーに起こっていることを心配しています。これが起こっていることを伝える方法はありませんし、たとえそうしたとしても、彼らにそれを修正する方法を伝えることはできませんでした (4 週間のブラウザー履歴を消去することはオプションではありません!)。何が起こっていたのか、誰かに光を当てることができますか?