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
):