0

私が持っているものは次のとおりです。

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

4

1 に答える 1