EDIT:この質問はthis oneとよく似ていますが、より概念的です。backbone.js全体を理解する
はroutes
を反映した静的リンクのバウンスで単一ページのアプリケーションを想定します
<!-- Top navlist -->
<ul class="nav nav-list">
<li><a class="active" href="#/customers">Customers</a></li>
</ul>
<!-- Left navlist -->
<ul class="nav nav-list">
<li><a class="active" href="#/customers">Show customers</a></li>
<li><a href="#/customers/new">Create customer</a></li>
</ul>
は、私は1つ(またはそれ以上)の現在のルートに基づいて、リンクのためのclass="active"
を設定する必要があります。どちらが正しいアプローチですか?
- ゼロから、限り
LinkCollectionView
とLinkView
として、Link
とLinkCollection
モデルを作成します。これは、私には行き過ぎのようです。リンクはサーバー側に依存しないため(動的に作成されていない)、リンクは役に立たないようです。 Link
とLinkCollection
モデルを既存のリンクを繰り返して作成します。- モデルについては忘れて、手動で各経路に
class="active"
を設定してください。何かのような$('body').find('a[href="#/customers"]').addClass('active')
。私にコードの複製があるようです。 - "グローバル"
AppView
ビューを作成し、ptのような操作を行います。 3のrender()
である。
ルート定義例:
<script>
(function($){
var MyApp = { Models : {}, Collections : {}, Views : {} };
// The Router
MyApp.Router = Backbone.Router.extend({
routes : {
'/customers' : 'showCustomersView',
'/customers/new' : 'showCreateCustomerView'
},
showCustomersView : function() {
// Make customers links active
},
showCreateCustomerView : function() {
// Make new customer links active
},
});
})(jQuery);
</script>
+1の説明です。しかし、私は 'router.navigate'はMVCパターンの背後にある哲学を破ると考えています。これは、データを取得して正しいビューを提供するルータです。それは、IMHOがすべきことです。 – gremo
おそらくデータ経路、有効な構文を使用するほうがよいでしょう。 – steveax
良いお呼び、steveax。私は自分の答えを更新しました。 Gremo、あなたが何を意味するか分かりません。ルータ*はデータを取得してビューを提供しています。これはルータがリンクをクリックするのを反応させることです。クエリ/ビューのロジックはまだルータに残っていますが、これ以上のことはありません。 –