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 主干事件:在触发时记录所有事件_Backbone.js - Fatal编程技术网

Backbone.js 主干事件:在触发时记录所有事件

Backbone.js 主干事件:在触发时记录所有事件,backbone.js,Backbone.js,我正在使用一点主干线和下划线创建一个事件对象,如下所示: var appEvents = _.extend({}, Backbone.Events); 然后我尝试创建一个函数,该函数将console.log所有和任何触发到此对象的事件,不管它在何处、如何或有什么侦听器,但我不确定该如何做。我还在用脊梁骨做实验 我认为使用listenTo方法是最好的选择。。。但同样,我不确定我将如何实现它。您可以使用主干网的特殊all事件: appEvents.on("all", function(eventN

我正在使用一点主干线和下划线创建一个事件对象,如下所示:

var appEvents = _.extend({}, Backbone.Events);
然后我尝试创建一个函数,该函数将console.log所有和任何触发到此对象的事件,不管它在何处、如何或有什么侦听器,但我不确定该如何做。我还在用脊梁骨做实验


我认为使用listenTo方法是最好的选择。。。但同样,我不确定我将如何实现它。

您可以使用主干网的特殊
all
事件:

appEvents.on("all", function(eventName){
    console.log(eventName + ' was triggered!');
});

然后覆盖触发功能

var trigger = appEvents.trigger;
appEvents.trigger = function(name) {
  console.log('Event', name, 'triggered.');
  trigger.apply(this, arguments);
};

但我仍然觉得整个故事很奇怪(同样,这只是我的观点)。

你能试着重新表述一下你想做什么吗?因为Backbone.Events实际上不应该用作对象。它只定义了一些方法来扩展所有其他对象(路由器、视图、集合、模型)。对不起,我认为我没有使用正确的措辞<代码>外观工作正常。我可以做appEvents.trigger('event')很好。我想做的是,在我的控制台中,当这些事件被触发时,以某种方式看到它们。假设我点击链接时触发了一个名为“OpenModel”的事件,我希望在点击该链接时有一个名为“OpenModel”的
控制台。当
出现时,它会自动运行。触发器被调用。请看他的评论,它不是在监听,而是在触发。这!非常感谢。我知道这应该很简单。Enrique,请根据你最后的评论,将这个答案标记为正确。而且@EnriqueRamírezVélez从未收到againSorry的来信,我(再一次)把你弄糊涂了。我以触发器为例,但我希望看到appEvents上的任何变化@mVChr明白了。非常感谢。
var object = {};

_.extend(object, Backbone.Events);

object.on("alert:param1", function(msg) {
  alert("Сработало " + msg);
});


object.on("alert:param2", function(msg) {
  alert("Сработало " + msg);
});



object.on("all", function(eventName) {
  console.log(eventName);
});
object.trigger("alert:param2", "событие");
object.trigger("alert:param1", "событие");