Backbone.js全局事件

时间:2012-04-06 10:16:42

标签: backbone.js

关于Backbone中的事件的快速问题 - 有没有办法定义一组全局事件,可以在不同的视图中重复使用?

例如 - 假设我在页面上呈现了几个视图。每个视图都有一个按钮,可以展开菜单。还有其他一些通用元素和事件。如果不将此事件逻辑放入每个视图中,是否有一种方法可以使这些视图中的每一个都可以继承或从全局事件定义中提取这些事件?通过在一个地方定义这些通用事件,它肯定会节省时间并成为更清洁的解决方案。

我已经看到了诸如Event Aggregator和Factory模式之类的术语 - 但不确定最佳方法(或者它们是否会实现我所追求的目标)。

1 个答案:

答案 0 :(得分:53)

您基本上是在描述事件聚合器或调度程序,是的。我有几篇关于使用Backbone构建和使用它们的文章:

http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

http://lostechies.com/derickbailey/2012/04/03/revisiting-the-backbone-event-aggregator-lessons-learned/

网上还有更多关于Backbone和其他pub / sub库的文章。

在Backbone中做起来很简单:


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

现在您有一个vent对象,可以在整个应用程序的视图和其他对象中用作事件聚合器。


vent.on("some:event", function(){
  console.log("some event was fired");
});

vent.trigger("some:event");