2016-04-29 60 views
0

像触发: -listenTo骨干事件从在骨干鉴于事件的散列我们有一个选择指定的事件, 例的特定元素或视图

events: { 
    "click .icon":   "open", 
    "click .button.edit": "openEditDialog", 
    "click .button.delete": "destroy" 
    } 

如何与实现这个listenTo

this.listenTo('Events','mouseenter .icon',callback) 

PS:我有多个部件(如按钮,复选框),我有一个UI,其允许听众绑定到DOM的那些部件(一个降低组件交互)。他们点击,的mouseenter等默认JavaScript事件处理并引发像点击双击这样的事情: -

Events.trigger('click',data); 

Events.trigger('dblClick',data); 

但我要绑定的听众只有特定的组件,因为任何组件的mouseenter都会导致Events.trigger('mouseenter',data),因此禁止接收者监听所有现有dom组件的mouseenter。

回答

2

我认为你对来自Backbone.Events的DOM事件之间的混淆 - 它们是不一样的。

事件散列仅适用于Backbone.View,并且指的是可以绑定到View中的事件处理程序方法的DOM事件。

listenTo()是Backbone.Events中的一种方法,可应用于在Backbone.Events中混合的任何对象。您的listenTo()方法中的第一个参数应该是在Backbone.Events中混合的对象。

+0

那么,我应该如何绑定事件侦听器(骨干事件侦听器),仅限于侦听特定的视图实例。我对每个实例都有唯一的id,但我不想在接收者端使用if循环来根据Id过滤出触发器。使用if循环似乎是不正确的或种类的硬编码方式。 – packetZ

+0

骨干事件可以携带有效载荷。所以,如果你的视图实例有一个viewId(例如),它可能会触发一个包含viewId的事件有效载荷的事件。从监听者的角度来看,事件处理程序将接收这个有效负载作为参数,并且能够在决定采取适当的操作之前检查viewId的值。 –