Backbone.js:跨视图绑定/取消绑定事件
我使用的是,他在其中演示了对象管理事件的引发和这些事件的订阅者的模式 当我在一个视图中触发事件,在另一个视图中订阅事件时,一切都正常。当两个或多个视图订阅了一个事件,然后在放弃一个视图时,其中一个视图取消了对该事件的订阅时,问题就出现了。这会导致所有其他视图也从事件中取消订阅 有什么解决办法吗 更新 以下是我在视图中使用的一点代码:Backbone.js:跨视图绑定/取消绑定事件,backbone.js,backbone-events,Backbone.js,Backbone Events,我使用的是,他在其中演示了对象管理事件的引发和这些事件的订阅者的模式 当我在一个视图中触发事件,在另一个视图中订阅事件时,一切都正常。当两个或多个视图订阅了一个事件,然后在放弃一个视图时,其中一个视图取消了对该事件的订阅时,问题就出现了。这会导致所有其他视图也从事件中取消订阅 有什么解决办法吗 更新 以下是我在视图中使用的一点代码: var EventAggregator = _.extend({}, Backbone.Events); new MyView({ collection:
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
}
});
更改以下行:
this.options.eventagg.unbind('evt:action');
到
你能分享一些代码吗?具体来说,您是如何放弃视图的,以及是否覆盖了基本视图。remove()。@timDunham-我编辑了这个问题。我没有重写view.remove()方法。
this.options.eventagg.unbind('evt:action', this.actionFnc);