【问题标题】:listenTo backbone event triggered from a particular element or view从特定元素或视图触发的 listenTo 主干事件
【发布时间】:2016-04-29 20:06:57
【问题描述】:

就像在主干视图中的事件哈希一样,我们使用选择器指定事件, 示例:-

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

你如何用 listenTo

实现这个
this.listenTo('Events','mouseenter .icon',callback)

PS:我有多个组件(如按钮、复选框),并且我有一个 UI 允许将侦听器绑定到 DOM 中的这些组件(允许组件交互)。他们已经处理和触发了 click、mouseenter 等默认 javascript 事件,例如单击和双击这样的东西:-

Events.trigger('click',data); 

Events.trigger('dblClick',data);

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

【问题讨论】:

    标签: javascript events backbone.js


    【解决方案1】:

    我认为您对 Backbone.Events 中的 DOM 事件感到困惑——它们并不相同。

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

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

    【讨论】:

    • 那么,我应该如何绑定仅限于监听特定视图实例的事件监听器(骨干事件监听器)。我确实为每个实例都有唯一的 id,但我不想在接收者端使用 if 循环来过滤掉基于 Id 的触发器。使用 if 循环似乎是不正确的或硬编码的方式。
    • 主干事件可以携带有效载荷。因此,如果您的视图实例有一个 viewId(例如),它可能会触发一个事件,其事件有效负载包含该 viewId。从侦听器的角度来看,事件处理程序将接收此有效负载作为参数,因此将能够在决定采取适当措施之前检查 viewId 的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多