Backbone.js全局事件

cra*_*awf 20 backbone.js

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

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

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

Der*_*ley 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/

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

在Backbone中做起来很简单:


vent = _.extend({}, Backbone.Events);
Run Code Online (Sandbox Code Playgroud)

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


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

vent.trigger("some:event");
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了关于它的优秀帖子,并认为这是最优雅的解决方案(重访更多)!我跟着你的文章,它的工作得很好 - 顺便说一句好文章.但是,这仍然意味着我需要在每个View中指定事件组(它只是触发所需的事件).由于这些视图组中的每一组始终执行相同的任务(例如,添加或编辑按钮),有没有什么方法可以简化视图的任何进一步操作? (3认同)