1

我想实现这个接口

addListener(name, callback);
removeListener(name, [callback]); // callback is optional
trigger(name);

所有事件都将在内部事件总线上触发

var bus = {}

这不是界面的一部分。

这是我能想象到的最简单的界面,它实际上很有用。

但是我仍然不知道如何从概念上实现这些接口。我仔细阅读了主干事件系统,但不太了解它们是如何实现这个核心功能的。

我只想写一个快速的 10-100 行事件系统,它尽可能简单,并且基于更复杂的 Backbone 事件系统。

4

2 回答 2

3

你可以使用 Backbone.Events 模块。

无耻地从迷失中偷走

您可以使用应用程序级别的事件聚合器:

MyApp = {};
MyApp.vent = _.extend({}, Backbone.Events);

MyApp.vent.on("some:event", function(){
  alert("some event was fired!");
});

MyApp.vent.trigger("some:event");
于 2013-03-18T17:01:34.077 回答
0

查看最小事件总线库minibus.js。它目前有不同的 API,但可能正是您正在寻找的。

var bus = Minibus.create();
bus.on(name, callback);  // add listener
bus.emit(name);          // trigger event
bus.off(name);           // remove listener
于 2014-01-07T19:40:26.723 回答