我有一個名爲Foo的Backbone視圖,它有一個滾動條。當滾動條在某個方向上移動時,我希望以各種方式更改應用程序中的其他視圖。這些視圖不嵌套在Foo內部 - 它們是完全獨立的,並且是獨立管理的。我應該如何讓Backbone應用程序中的視圖相互更改?
我應該將所有其他視圖的引用傳遞給Foo的構造函數,以便它可以手動更新它們嗎?還是應該使用事件來通知滾動條移動的其他視圖?如果是這樣的話,Foo應該觸發什麼對象,並由其他觀點來聆聽?
這些純粹是視覺上的變化,沒有支持它們的模型。
我有一個名爲Foo的Backbone視圖,它有一個滾動條。當滾動條在某個方向上移動時,我希望以各種方式更改應用程序中的其他視圖。這些視圖不嵌套在Foo內部 - 它們是完全獨立的,並且是獨立管理的。我應該如何讓Backbone應用程序中的視圖相互更改?
我應該將所有其他視圖的引用傳遞給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個視圖到另一個,或事件,你也可以好好看看在Derick Bailey撰寫的這篇文章中,他將上述方法解釋爲一個eventAggregator,並列出了關於如何使用它(和替代方法)的文檔示例。 http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/