事件委托和Ember动作中的全局`event`对象

问题描述 投票:0回答:1

今天,我已经在Ember中了解了一些有关event delegation的知识。整个过程正是我想在代码中使用的。不过有一个小问题。当我从

迁移时
<div ondragend={{action "dragEnd"}}></div>

to

<div {{action "dragEnd" on="dragEnd"}}></div>

然后我再也无法在我的操作方法中获得event参数,问题是我需要它才能访问event.clientX/YThis answer提到可以像这样简单地删除参数event并“全局”使用它]

...
actions: {
  dragEnd() {
    event.blahblah...
  }
}

所以,我对此技术有一些疑问:

  1. 谁能告诉我这是合法的吗?它没有记录在任何地方。
  2. 我是否正确理解,在我使用闭包动作(<div ondragend={{action "dragEnd"}}></div>)的情况下,它将不使用事件委托,即它将事件处理程序附加到该div上,而不是将它附加到body上根据doc是否使用此模式(<div {{action "dragEnd" on="dragEnd"}}></div>)?
javascript ember.js
1个回答
1
投票

首先,您为什么要迁移到{{action "dragEnd" on="dragEnd"}}?那是最早的余烬行动风格,您不应该使用它们。当使用以ondragend={{action "dragEnd"}}装饰的新动作时,请使用{{on "dragEnd" this.dragEnd}}或更好的@action。如果您在actions哈希中有操作,请使用{{on "dragEnd" (action "dragEnd")}}

© www.soinside.com 2019 - 2024. All rights reserved.