我有一个名为super-View的视图,负责呈现sub-Views。当我重新渲染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();
当我在composer.render()
,一切看起来都很相似,但是点击事件不再被触发。请查看可工作的jsFiddle示例。
render
调用对视图的this.img
属性做了什么?这里有一个提示:如果你使用this.$('#abc')
而不是尝试缓存this.img
,它会起作用。在你的点击处理程序中加入console.log('clicked')
,你会发现你没有事件问题。 - mu is too short