Backbone: 重新渲染中丢失的事件

9 浏览
0 Comments

Backbone: 重新渲染中丢失的事件

我有一个超级视图(super-View),负责渲染子视图(sub-Views)。当我重新渲染超级视图时,子视图中的所有事件都会丢失。

以下是一个示例:

var SubView = Backbone.View.extend({
    events: {
        "click": "click"
    },
    click: function(){
        console.log( "click!" );
    },
    render: function(){
        this.$el.html( "click me" );
        return this;
    }
});
var Composer = Backbone.View.extend({
    initialize: function(){
        this.subView = new SubView();
    },
    render: function(){
        this.$el.html( this.subView.render().el );             
    }
});
var composer = new Composer({el: $('#composer')});
composer.render();

当我点击 "click me" 的 div 时,事件会触发。如果我再次执行 composer.render(),一切看起来都一样,但是点击事件不再触发。

请在这个工作的 jsFiddle 中查看。

0