9

リージョンを含むレイアウト ビューがあります。そのリージョンには、イベントをトリガーするアイテム ビューがありますが、レイアウト ビューにバブルアップしていないようです。私は何か間違ったことをしていますか、それともこれは設計された動作ですか? 親ビューがコレクション ビューではないため、itemview プレフィックスが追加されていないと思いますか? いずれにしても、イベントがレイアウト ビューにバブルされることはありません。

layoutView = Marionette.Layout.extend({
        template: "#layout-template",
        regions: {
            titleRegion: "#job-title-region"
        },
        triggers: {
            "save:clicked" : "onSaveClicked"
        },
        onSaveClicked: function (args) {
            alert('Clicked');
        }
    });

childview = Marionette.ItemView.extend({
        template: "#child-template",
        triggers: {
            "click .js-save": "save:clicked"
        }
    });

アップデート:

このフィドルを参照してくださいhttp://jsfiddle.net/7ATMz/11/レイアウトビューで子イベントをリッスンすることができましたが、レイアウトビュー自体の外に接続してカプセル化を解除する必要があります。とにかくレイアウトビューでこれを行うことはできますか?

ありがとう、

ジョン

4

5 に答える 5

4

このタイプのニーズには Backbone.Courier を使用することをお勧めします: https://github.com/rotundasoftware/backbone.courier

于 2013-10-07T15:44:22.467 に答える
0

クリック イベントが DOM 階層をバブルアップし、レイアウト ビューで処理できるようにしないのはなぜですか? このようなもの(ここでフィドル):

var MainView = Marionette.Layout.extend({
    template: "#layout-template",
    regions: {
        childRegion: "#childRegion"   
    },
    events: {
        'click #btn': 'handleButtonClick'   
    },
    handleButtonClick: function() {
       alert('btn clicked in child region and bubbled up to layout');
    }
});

var ChildView = Marionette.ItemView.extend({
    template: "#child-template"
    /*
    triggers: {
        "click #btn": "btn:clicked"   
    }*/
});
于 2013-05-31T23:10:14.297 に答える