私はここで手足を出しており、OPの質問は、ナビゲーションのアンカータグなどを介してアプリのさまざまな部分に移動するときのアプリの動作に基づいていると想定しています。
これが私が質問を見つけた方法であり、答えが私の日を救うだろうと簡単に考えました. これまでのところ両方の答えは正しいですが、私が抱えていた問題を完全には解決していません。永続的なナビゲーション バーを表示したかったのです。ただし、ログインページに表示したくありませんでした。Region が既に表示されているかどうかを検出することで、表示ロジックにこれを適切に処理させることができると期待していました。
結局のところ、リージョンを実装することできめ細かい制御が可能になるため、リージョンを実装するのに正しい軌道に乗っていましたが、上記を実装した後でも、ナビゲーション バーがまだ「ちらつき」、本質的に完全に再読み込みされることがわかりました。
答えは実際には少しばかげています。過去 2 週間にわたって行ってきたすべてのバックボーンのチュートリアルと調査の中で、どういうわけか、通常のリンク動作を中断するために JavaScript インターフェースを実装する必要があることに一度も遭遇しませんでした。ナビゲーション項目がクリックされるたびに、アプリ全体がリロードされていました。ルーティングは機能していたので内容は正しいのですが、ちらつきが気になりました。
Backbone.history.start({pushState: true}); の直後に app.js ファイルに次を追加しました。コード:
// Holy crap this is SOOO important!
$(document).on("click", "a[href^='/']", function(event) {
if (!event.altKey && !event.ctrlKey && !event.metaKey && !event.shiftKey) {
event.preventDefault();
var url = $(event.currentTarget).attr("href").replace(/^\//, "");
Backbone.history.navigate(url, { trigger: true });
}
});
keyPress 検出に関する説明については、この記事を参照してください。http://dev.tenfarms.com/posts/proper-link-handling
ブーム!アプリにこのようなものを追加した後、完全にリロードされなくなりました!
免責事項:私は Backbone を初めて使用し、上記が私にとって非常に啓示であったという事実は、私がどこかで何か間違ったことをしている可能性があり、この動作は Backbone に既に存在しているはずだと考えさせます。ここで大きな間違いを犯した場合は、コメントして修正を手伝ってください。