0

Marionette の CompositeView の使用に問題があります。テンプレートを使用して CompositeView でモデルをレンダリングし、それにクリック イベントを追加したいと考えています。どういうわけか、CompositeView のハンドラーを使用してイベントを動作させることができませんevents: { "click": "function" }...何が間違っていますか?

var FactsMenuItem = Backbone.Marionette.ItemView.extend({
    template: tmpl['factsmenuitem'],

    initialize: function() {
        console.log('factsmenuitem');
    },

    onRender: function() {
        console.log('factsmenuitem');
    }

});

var FactsMenuView = Backbone.Marionette.CompositeView.extend({
    template: tmpl['factsmenu'],

    itemView: FactsMenuItem,

    itemViewContainer: ".subs",

    events: {
        'click': 'blaat'
    },

    blaat: function() {
        console.log('this is not working');
    },

    initialize: function() {
        this.model.get('pages').on('sync', function () {
            this.collection = this.model.get('pages');
            this.render();
        }, this);
    },

    onRender: function() {
        console.log('render factsmenu');
    }

});


var FactsLayout = Backbone.Marionette.Layout.extend({

    template: tmpl['facts'],

    regions: {
        pages: ".pages",
        filter: ".filter",
        data: ".data"
    },

    initialize: function(options) {
        this.currentPage = {};

        this.factsMenu = new FactsMenu();
        this.factsView = new FactsMenuView({model: this.factsMenu});
    },

    onRender: function() {
        this.pages.show(this.factsView);
    }

});

編集: 質問を不明確にするいくつかのコードを削除しました...

問題は、複合ビュー (モデル ビュー??) の非コレクション ビューのイベントが発生しないことです。これは、FactsLayoutView がコンポジットビューをインスタンス化する方法と関係があると思います...

4

2 に答える 2