我所拥有的是以下内容:
Views.Parent = Backbone.View.extend( {
template: "parent",
initialize: function( ) {
this.render( );
},
beforeRender: function( ) {
this.setView( ".foo", new Views.Child( {
model: this.model
} );
},
afterRender: function( ) {
this.$el.html( Handlebars.compile( this.$el.html( ) ).call( this, this.model.attributes ) );
var foo = this.getView( ".foo" );
foo.delegateEvents( );
}
} );
Views.Child = Backbone.View.extend( {
template: "child",
events: {
"click input": "inputClick"
},
initialize: function( ) {
this.listenTo( this.model, "change", this.render );
},
inputClick: function( ) {
console.info( "Input Clicked" );
},
afterRender: function( ) {
this.$el.html( Handlebars.compile( this.$el.html( ) ).call( this, this.model.attributes ) );
var foo = this.getView( ".foo" );
foo.delegateEvents( );
}
} );
中的事件Views.Child
没有触发。肯定会找到该视图,并且 foo.events 返回正确的事件。我尝试了多种插入子视图的方法,delegateEvents 只是没有这样做。
有没有其他人遇到过这个问题并可以提供任何见解?
我应该提到我在子视图中同时使用了 events 属性和 this.listenTo。他们都没有被解雇。
编辑:父级被添加到另一个视图中:
this.$el.append( parentView.$el );
parentView
的实例化对象在哪里Views.Parent
。