ベントイベントを集約するためのMarionetteJSアプリケーションオブジェクトにはありますか?
-
13-12-2019 - |
質問
イベントを集約するためのマリオネットにはありますか?
これを変更するのははるかに簡単だろうということです:
MyApp.vent.on("taskMoved", function(moveData){
// taskId, fromBucketId, toBucketId, order, $li
moveTask(moveData.taskId,moveData.fromBucketId, moveData.toBucketId, moveData.order, moveData.li);
});
MyApp.vent.on("taskMovedLast", function(moveData){
// taskId, fromBucketId, toBucketId, order, $li
moveTaskLast(moveData.taskId, moveData.fromBucketId, 99);
});
MyApp.vent.on("taskMovedFirst", function(moveData){
// taskId, fromBucketId, toBucketId, order, $li
moveTaskFirst(moveData.taskId, moveData.fromBucketId, 99);
});
.
これに:
{
"taskMoved":"moveTask",
"taskMovedLast":"taskMovedLast",
"taskMovedFirst":"taskMovedFirst"
}
.
BackBoneViewイベントオブジェクトと同様です。
これは行うことができますか?
解決
あなたはそれを行った方法を書くことができましたが、私の仕事からマリオネットと私の仕事から言うことができる限り、あなたはできません。
しかし、あなたは次のようなことができます:
bind_events: function(events_hash){
var that = this;
_.each(events_hash, function(func, evt){
MyApp.vent.on(evt, that[func]);
}
};
.
そのハッシュを渡し、それはあなたのためにそれらすべてをオンにします。
他のヒント
すべてのベントイベントにバインドしたい場合は、
vent.on('all',this.trigger.bind(this))
.
「プロキシ/メディエータ」としてベントを使用したい場合は、これは良い考えです。
所属していません StackOverflow