4

バックボーン ルーティングでこの問題に直面しており、調査に十分な時間を費やしたと考えています。

ここでは、/ と /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 週間のブラウザー履歴を消去することはオプションではありません!)。何が起こっていたのか、誰かに光を当てることができますか?

4

1 に答える 1

0

なぜあなたは追加しようとしないのですか

console.log(Backbone.history.handlers);

最後に、敗走が Backbone.history にどのように追加されるかを確認します。これはいくつかの光を当てるかもしれません。

于 2012-08-14T09:27:48.390 に答える