Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js:跨视图绑定/取消绑定事件_Backbone.js_Backbone Events - Fatal编程技术网

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);