私は、スクロールバーを持つ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つの別のビュー、またはイベントのいずれかで、あなたもよく見てとることができます。