6

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

var appEvents = _.extend({}, Backbone.Events);

然后,我尝试创建一个函数,该函数将 console.log 记录所有触发到该对象的事件,无论它在哪里、如何或有什么侦听器,但我有点不确定我会怎么做。我仍在尝试使用 Backbone。

我认为使用 listenTo 方法是要走的路......但同样,我不确定我将如何实现它。

4

3 回答 3

37

您可以只使用 Backbone 的特殊all事件:

appEvents.on("all", function(eventName){
    console.log(eventName + ' was triggered!');
});
于 2013-04-05T21:04:47.397 回答
1
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", "событие");
于 2016-08-31T07:42:02.493 回答
0

然后覆盖触发函数。

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

但我仍然觉得整个故事很奇怪(再说一次,这只是我的看法)。

于 2013-04-05T21:07:09.370 回答