我正在使用Derick Bailey 的事件聚合器模式,他在其中说明了对象管理事件的引发和这些事件的订阅者的模式。
当我在一个视图中触发事件并在另一个视图中订阅它们时,一切正常。当两个或多个视图订阅一个事件,然后在丢弃一个视图时,其中一个视图取消订阅该事件时,问题就出现了。这也会导致所有其他视图也取消订阅该事件。
有一些解决方法吗?
更新
这是我在我看来使用的一些代码:
var EventAggregator = _.extend({}, Backbone.Events);
new MyView({
collection: MyCollection,
eventagg: EventAggregator
});
MyView = Backbone.View.extend({
initialize: function() {
_.bindAll(this, 'render', 'close', 'actionFnc');
this.childviews = [];
this.options.eventagg.bind('evt:action', this.actionFnc);
this.render();
},
render: function() {
},
close: function() {
_(this.childViews).each(function(childview) {
childview.close();
});
$(this.el).empty();
this.options.eventagg.unbind('evt:action');
},
actionFnc: function() {
// do something over here
}
});