Backbone.jsを使っていて、trigger()で発火するコールバック関数に引数を渡す際につまづいたのでメモ
コールバック関数に渡す引数が1つの場合
trigger()を使用する際、コールバック関数へ1つの引数を渡すには
var arg = "foo";
obj.$el.trigger("func", arg);
→ "foo" がコールバック関数に渡される。
という感じで、第2引数に記述して渡す。
コールバック関数に渡す引数が2つ以上の場合
これがよくわからなくて、とりあえずどっかの本かサイトで
var arg1 = "foo";
var arg2 = "bar";
obj.$el.trigger("func", arg1, arg2);
とあったので、やってみたら渡した先でarg2はundefinedとなってしまった。
実際はこうではなく
obj.$el.trigger("func", [arg1, arg2]);
とやるのが正しいらしい。というか、普通に公式のリファレンスに載っていた。
また、受け取る先の関数では
function callback(arg){
var arg1 = arg[0];
var arg2 = arg[1];
//some code here
}
ではなく
function callback(arg1, arg2){
//some code here
}
でOKっぽい。