0

私の BackboneJS アプリには、本のような詳細ビューがあり、 editorial/book/edit/4のような URL で表されます。Book ビューは、TwitterBoostrap マークアップに基づいたいくつかのタブで構成されています。たとえば、Book のタブ General/Special/Admin です。

ドキュメントで規定されているようにBoostrapタブを使用すると、たとえば

<li><a data-toggle="tab" href="#special">Special</a></li>

その後、タブをクリックするとアドレス バーの URL が無効になり、ナビゲーション バーに siteurl/editorial/book/edit/4#special ではなく、siteurl#special が表示されます。

Q1: Backbone/Boostrap を使用して有効な URL を持つタブを作成する最良の方法は何ですか? 私が目指している次のステップは、このビューをリロード可能にすることです。たとえば、タブが選択され、ユーザーがブラウザで「リロード」をクリックすると、少なくとも同じビューがロードされ、理想的には最新のタブが選択されます。

Q2: 理想的な方法は何ですか? タブを持つすべての詳細画面に対して 1 つのルーター機能を構築するか、タブごとにいくつかのルーター機能に分割しますか?

4

1 に答える 1

0

私のお勧めは、JS 側でナビゲーションを処理することです。

質問 1 への回答

ユーザーがタブをクリックすると、ハンドラーでバックボーン ナビゲート機能が使用されます。

app.navigate("siteurl/editorial/book/edit/4" + '#' + tabId, {trigger: true});

(この例では、URL パスがハードコーディングされていdocument.URLます。必要に応じて、または別の関数で取得してください)

質問 2 への回答

それは、実装する必要があるロジックと、そのロジックが重いかどうかによって異なります。あなたの質問のように、各タブには異なるビューがあると言われましたが、すべてが同じパス (例: siteurl/editorial/book/edit/4) に適用されるため、1 つのルーター関数内のロジックを分割することをお勧めします。フラグメント URL が異なります。

routes: {
  "siteurl/editorial/book/edit/4#:tabId":         "tab",
}
router.on("siteurl/editorial/book/edit/4#:tabId", function(tabId) {
  //Split your logic based on the tabId
});
于 2013-04-09T16:29:44.803 に答える