私が持っているものは次のとおりです。
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
。