Javascript 主干-侦听多个事件并确定触发哪个事件

Javascript 主干-侦听多个事件并确定触发哪个事件,javascript,backbone.js,Javascript,Backbone.js,我想为两个事件注册一个侦听器,并确定触发哪个事件 // how do I determine which event fired? this.listenTo( Backbone, 'minimize maximize', function( data ){ console.log( 'minimize or maximize called, but which one?' ); /* if( minimize ) doStuff(); if(

我想为两个事件注册一个侦听器,并确定触发哪个事件

// how do I determine which event fired?
this.listenTo( Backbone, 'minimize maximize', function( data ){ 
    console.log( 'minimize or maximize called, but which one?' );
    /*
    if( minimize )
        doStuff();
    if( maximize )
        doOtherStuff();
    */
});
我知道这可以分为两个侦听器:

this.listenTo( Backbone, 'minimize', callbackOne);
this.listenTo( Backbone, 'maximize', callbackTwo);

但我想知道第一种方法是否可行?

一种方法是使用神奇的“all”事件处理所有事件,然后根据事件名称进行区分:

this.listenTo( Backbone, 'all', function(event_name, data ){ 

    if( event_name == "minimize" )
        doStuff();
    if( event_name == "maximize" )
        doOtherStuff();
});
当然,这不是最优的,因为这将在所有事件上触发,这会给应用程序增加不必要的开销

但是,您可能会发现这样使用映射语法更好:

function handlerForMaximize(data){
    // Do something useful here
}
function handlerForMinimize(data){
    // Do something useful here
}

this.listenTo( Backbone, {
    "maximize" : handlerForMaximize,
    "minimize" : handlerForMinimize
});
如果您坚持对所有内容使用单个函数,您可以这样做(需要
下划线.js
):


一种方法是使用神奇的“all”事件处理所有事件,然后根据事件名称进行区分:

this.listenTo( Backbone, 'all', function(event_name, data ){ 

    if( event_name == "minimize" )
        doStuff();
    if( event_name == "maximize" )
        doOtherStuff();
});
当然,这不是最优的,因为这将在所有事件上触发,这会给应用程序增加不必要的开销

但是,您可能会发现这样使用映射语法更好:

function handlerForMaximize(data){
    // Do something useful here
}
function handlerForMinimize(data){
    // Do something useful here
}

this.listenTo( Backbone, {
    "maximize" : handlerForMaximize,
    "minimize" : handlerForMinimize
});
如果您坚持对所有内容使用单个函数,您可以这样做(需要
下划线.js
):