edo1z blog

プログラミングなどに関するブログです

Backbone.js Marionette イベント 他View間の連携

参考:Event Aggregator

var MyApp = new Backbone.Marionette.Application();

// Alert the user on the 'minutePassed' event
MyApp.vent.on("minutePassed", function(someData){
  alert("Received", someData);
});

// This will emit an event with the value of window.someData every minute
window.setInterval(function() {
  MyApp.vent.trigger("minutePassed", window.someData);
}, 1000 * 60);

アプリに、vent.onというのを使って、イベント発生時の挙動を登録する。あとは、登録したイベントを発生させたいところで、vent.triggerする。

他のView間で連携する場合は、Viewのinitialize関数で、下記のようにやる。

initialize: function(){
    _.bindAll(this,  'hoge');
    App.vent.on('HogeHoge', this.hoge);
},

このViewのインスタンスが作成されるときに、initalize関数が呼ばれますが、そのときにHogeHogeというイベントが発生したら、このViewのhogeを実行するよと、登録している。あとは、他のViewで、App.vent.trigger('HogeHoge');とやると、HogeHogeイベントが発火する。