相关疑难解决方法(0)

Backbone.js:如何在模型删除时从事件中取消绑定

在骨干网中,我们有一个使用事件聚合器的应用程序,位于window.App.Events 现在,在许多视图中,我们绑定到该聚合器,我手动在视图上编写了一个destroy函数,该函数处理来自该事件聚合器的解除绑定,然后删除视图.(而不是直接删除视图).

现在,某些模型我们也需要这个功能,但我无法弄清楚如何解决它.

某些模型需要绑定到某些事件,但也许我错了,但如果我们从集合中删除一个模型,由于这些绑定到仍然存在的事件聚合器,它会保留在内存中.

模型上没有真正的删除功能,就像视图一样.那我怎么解决这个问题呢?

编辑 请求,一些代码示例.

App = {
    Events: _.extend({}, Backbone.Events)
};

var User = Backbone.Model.extend({

    initialize: function(){
        _.bindAll(this, 'hide');
        App.Events.bind('burglar-enters-the-building', this.hide);
    },

    hide: function(burglarName){
        this.set({'isHidden': true});
        console.warn("%s is hiding... because %s entered the house", this.get('name'), burglarName);
    }

});

var Users = Backbone.Collection.extend({

    model: User

});

var House = Backbone.Model.extend({

    initialize: function(){
        this.set({'inhabitants': new Users()});
    },

    evacuate: function(){
        this.get('inhabitants').reset();
    }

});



$(function(){

    var myHouse = new House({});

    myHouse.get('inhabitants').reset([{id: 1, name: 'John'}, {id: 1, name: 'Jane'}]);

    console.log('currently living …
Run Code Online (Sandbox Code Playgroud)

javascript events event-handling backbone.js

7
推荐指数
1
解决办法
1万
查看次数

标签 统计

backbone.js ×1

event-handling ×1

events ×1

javascript ×1