笑いながらコードを書く。

vimから出たくないフロントエンドエンジニアの備忘録的な何か。

Closure LibraryのdispatchEvent時に値を渡す方法について

goog.events.listenで登録したイベントに、値を渡したい。
でもドキュメント読んでも引数で渡す設定とかは無さそうだしどうやんねん!

となったので調べたらカスタムイベントを作ればいいっぽい。

// CustomEvent
goog.provide('hogehoge.CustomEvent');
goog.require('goog.events.Event');

hogehoge.CustomEvent = function(type, arg) { // type: イベント名, arg: 渡したい値
    this.type = type;
    this.arg = arg;
};

goog.inherits(hogehoge.CustomEvent, goog.events.Event);

// dispatchEventで値を渡したいとき
goog.events.dispatchEvent( instance, // イベント発火させたい対象 new hogehoge.CustomEvent('filterChange', {test: 'test'}) );

// 受け取るとき
goog.events.listen(
instance,
'filterChange',
function(e) {
// e.arg == {test: 'test'}
}
);

なるほど。