骨干:将事件附加到此.$ el和重新渲染会导致多个事件被绑定



我需要将事件附加到主视图元素,this。$ el。在这种情况下,它是" li"。然后,我有时需要重新呈现此观点。问题是,如果我对其进行渲染,它将附加附加的任何事件。$ el每次渲染时。因此,如果我称this.render()3次处理程序连接3次。但是,如果我将事件附加到此的子词。$ el,这不会发生,并且事件似乎自动未悬而未决,并在每个渲染上添加。问题是我需要使用主要的。在这种情况下,$ el element。

这是一个错误吗?不应该这样。我不应该把东西附加到这个。$ el?

视图内:

onRender: function(){
    this.$el.on('click', function(){
    // do something
});

如果您可以使用视图事件哈希,则可以执行以下操作:

var Bookmark = Backbone.View.extend({
    events: {
        'click': function() {
            console.log('bound once')
        }
    }
    ...});

如果由于某种原因不是选项,您可以在渲染方法中明确删除此事件的任何现有事件听众,这将阻止听众多次附加:

var Bookmark = Backbone.View.extend({
    ...
    render: function(x) {
        this.$el.off('click.render-click');
        this.$el.html(this.template());
        this.$el.on('click.render-click', function () { 
            console.log('only ever bound once');
        });
        return this;
    }
});

最新更新