2011-12-01 2 views
2

私は、スクロールバーを持つFooという名前のバックボーンビューを持っています。スクロールバーをある方向に動かすと、アプリケーション内の他のビューをさまざまな方法で変更したいと思っています。これらのビューはFooの内部にネストされていません。これらのビューは完全に独立しており、独立して管理されています。バックボーンアプリケーションでビューをどのように変更する必要がありますか?

他のすべてのビューへの参照をFooのコンストラクタに渡して、手動で更新する必要がありますか?または、イベントを使用してスクロールバーの動きの他のビューに通知する必要がありますか?そうであれば、Fooによってイベントがトリガーされ、他のビューで聴取されるべきですか?

これらは純粋に視覚的な変更であり、モデルを裏付けるモデルはありません。

NavigationView = Backbone.View.extend({ 
    initialize: function(options){ 
    options.events.bind("navigation:change", this.changeNavigation); 
    this.render(); 
    }, 

    changeNavigation: function(key){ 
    $('.menuItem', $(this.el)).removeClass("active"); 
    $('.menuItem', $(this.el)).filter("." + key).addClass("active"); 
    }, 

    render: function(){ 
    // rendering goes on here.... 

    } 
}); 

UserListView = Backbone.View.extend({ 

    initialize: function(options){ 
    options.events.trigger("navigation:change", "users"); 
    this.render(); 
    }, 

    render: function() { 
    // rendering goes on here.... 

    } 
}); 

// kickstart the application 

var myEvents = _.extend({}, Backbone.Events); 

var myNavigation = new NavigationView({events: myEvents}); 

// this is just a collection of users... i left it out as it is not really the point here... 
var users = new UserList(); 

var myUserList = new UserListView({collection: users, events: myEvents}); 

あなたはより多くの情報を必要とする必要があり、参照する1つの別のビュー、またはイベントのいずれかで、あなたもよく見てとることができます。

答えて