相关疑难解决方法(0)

将事件委派给Backbone中的父视图

我的观点TuneBook有几种类型的子视图ClosedTune.每个曲调我也有单独的整页视图OpenTune.同样的事件中约束ClosedTuneOpenTune,所以我设计我的应用程序,使他们无论从共享"抽象"视图继承Tune.

为了使我的应用程序更具可扩展性,我希望将每个事件ClosedTune委托给TuneBook,但为了可维护性,我希望使用相同的处理程序(存储在其中的处理程序Tune)TuneBook(尽管它们显然需要包含在某些函数中).

我遇到的问题是,TuneBook找到正确ClosedTune的调用处理程序.构建这个的好方法是什么,还是有其他好的解决方案将事件委托给父视图?

注意 - 不是Backbone View的重复:从父类继承和扩展事件(这是关于从父类继承的子节点,而我问的是DOM中父节点的子节点的子节点)

javascript model-view-controller events delegation backbone.js

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

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万
查看次数