Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 为主干集合上的多个事件使用.on()时获取事件名称。_Backbone.js_Backbone Events - Fatal编程技术网

Backbone.js 为主干集合上的多个事件使用.on()时获取事件名称。

Backbone.js 为主干集合上的多个事件使用.on()时获取事件名称。,backbone.js,backbone-events,Backbone.js,Backbone Events,使用.on()将多个事件绑定到主干集合时,如何知道在主干集合上触发了什么事件?请参见下面的示例以了解说明。(另请参见jsFiddle:) 您需要重写触发器方法来执行此操作,请查看代码: 如果我们希望每个事件都有特定的操作,最有序的方法是侦听每个事件,如果您希望在发生任何更改时有一个整体更改侦听器,请在侦听器中调用它,并在自己的位置指定事件名称 myGarage.on('add', function() { yourGlobalFunction(arguments, 'add');

使用.on()将多个事件绑定到主干集合时,如何知道在主干集合上触发了什么事件?请参见下面的示例以了解说明。(另请参见jsFiddle:)


您需要重写
触发器
方法来执行此操作,请查看代码:


如果我们希望每个事件都有特定的操作,最有序的方法是侦听每个事件,如果您希望在发生任何更改时有一个整体更改侦听器,请在侦听器中调用它,并在自己的位置指定事件名称

myGarage.on('add', function() {
     yourGlobalFunction(arguments, 'add');
     //specific actions for add
});
myGarage.on('change', function() {
     yourGlobalFunction(arguments, 'change');
     //specific actions for change
});
myGarage.on('reset', function() {
     yourGlobalFunction(arguments, 'reset');
     //specific actions for reset
});

function yourGlobalFunction(prevArguments, eventName){
   log(prevArguments, eventName);
}

谢谢你的回答,丹尼尔。这就是我目前所做的,它解决了手头的问题。我在寻找一种更干燥的解决方案。我尝试了myGarage.on('add change reset',…),但很惊讶我无法获取事件名称。我想重写触发器方法是唯一能满足我需要的解决方案/现在是2015年夏天,我不知道还有比这更好的方法,但我只使用了几个月的主干。主干源状态中关于触发器函数的评论“触发一个或多个事件,触发所有绑定回调。回调传递的参数与
trigger
相同,但不包括事件名称。”我不明白为什么总是发送事件名称不是一个好主意。你看到一个很好的理由了吗?不仅仅是在“所有”事件中。
myGarage.on('add', function() {
     yourGlobalFunction(arguments, 'add');
     //specific actions for add
});
myGarage.on('change', function() {
     yourGlobalFunction(arguments, 'change');
     //specific actions for change
});
myGarage.on('reset', function() {
     yourGlobalFunction(arguments, 'reset');
     //specific actions for reset
});

function yourGlobalFunction(prevArguments, eventName){
   log(prevArguments, eventName);
}