您可以制作一个简单的模型来保存应用程序状态,您不需要任何花哨的东西,只需要一个实现常用 Backbone 事件方法的数据包:
var AppState = Backbone.Model.extend({});
var app_state = new AppState();
然后流派列表视图将侦听点击事件(正如您已经拥有的)并在有人更改时在应用状态模型上设置当前流派:
var Genres = Backbone.View.extend({
//...
choose: function(ev) {
// This would be the click handler for the genre,
// `.html()` is just for demonstration purposes, you'd
// probably use a data attribute in real life.
app_state.set({genre: $(ev.target).html() });
},
});
单个流派的视图会监听"change:genre"
应用状态模型上的事件,并随着流派的变化做出反应:
var Genre = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'change_genre');
app_state.on('change:genre', this.change_genre);
},
//...
change_genre: function() {
// Refill the genre display...
}
});
演示:http: //jsfiddle.net/ambiguous/mwBKm/1/
您可以为所需的任何数据制作模型,模型是在 Backbone 中处理数据事件的便捷方式。作为一个额外的好处,这种方法使持久化应用程序状态变得相当容易:只需添加通常的 Backbone 持久性支持即可AppState
。
如果你只需要一个简单的事件总线来推送非数据事件,你可以使用 Backbone 的Events
方法来构建一个简单的事件聚合器:
app.events = _.extend({}, Backbone.Events);
然后,假设你有一个全局app
命名空间,你可以这样说:
app.events.on('some-event', some_function);
和
app.events.trigger('some-event', arg1, arg2, ...);