是否可以跨两个主干视图触发事件?

时间:2015-07-29 21:09:20

标签: jquery backbone.js backbone-events

如果我在一个页面上有两个视图,我如何在一个视图中使用$ .trigger()触发事件并在另一个视图中捕获该事件?

1 个答案:

答案 0 :(得分:0)

如果您依赖DOM事件进行视图之间的通信,那么如果您更改应用程序的结构,则会冒着停止工作的风险,因为DOM事件只会在树中向上冒泡。

为两个视图都可以访问的整个应用程序提供专用的事件通道更容易。

Backbone带有event实现,您可以使用它。

的EventChannel:

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

厂景:

this.listenTo(eventChannel, 'myEvent', function(args) { ... });

视图2:

eventChannel.trigger('myEvent', ...);

您可以在调用trigger时攻击事件数据,并将其传递给事件处理程序。通过使用listenTo,您可以允许视图跟踪其侦听器,以便在删除视图时清除它们。将使用侦听器作为上下文调用回调函数,因此在回调中this将是正在侦听的视图。