1

マリオネットでイベントを集計する方法はありますか?

つまり、これを変更する方がはるかに簡単です。

           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 イベント オブジェクトに似ています。

これはできますか?

4

2 に答える 2

2

それを行うメソッドを作成することはできますが、Marionette での私の作業からわかる限り、それはできません。

ただし、次のようなことができます。

bind_events: function(events_hash){
    var that = this;
    _.each(events_hash, function(func, evt){
        MyApp.vent.on(evt, that[func]);
    }
}; 

そのハッシュを渡すと、それらがすべてオンになります。

于 2012-10-03T16:17:03.867 に答える
0

すべてのベントイベントにバインドしたい場合は、次を試してください。

vent.on('all',this.trigger.bind(this))

ベントを「プロキシ/メディエーター」として使用する場合、これは良い考えです。

于 2013-02-10T00:02:22.857 に答える