Backbone.Eventsのメモ

function greet (){ console.log('I am ' + this.name)}

// 発行者を作成
var publisher = _.extend({name: 'publisher'}, Backbone.Events);
// 購読者を作成
var observer = _.extend({name: 'observer'}, Backbone.Events);

// 発行者にgreetイベントが発生した場合、greetを実行する。
// contextを指定しないとpublisherのcontextで実行される
publisher.on('greet', greet); 
// publisher.trigger('greet') => I am publisher

// 第3引数でcontextを指定する 
publisher.on('greet', greet, observer);
// publisher.trigger('greet') => I am observer

// listenToのほうが直感的な気がする
// publisherにgreetイベントが発生したときに、greet関数を実行する
// contextはobserverになる
observer.listenTo(publisher, 'greet', greet);
// publisher.trigger('greet') => I am observer

// _.bindを使えばcontextを変えることもできる
observer.listenTo(publisher, 'greet', _.bind(greet, publisher)); 
// publisher.trigger('greet') => I am publisher