今天,我已经在Ember中了解了一些有关event delegation的知识。整个过程正是我想在代码中使用的。不过有一个小问题。当我从
迁移时<div ondragend={{action "dragEnd"}}></div>
to
<div {{action "dragEnd" on="dragEnd"}}></div>
然后我再也无法在我的操作方法中获得event
参数,问题是我需要它才能访问event.clientX/Y
。 This answer提到可以像这样简单地删除参数event
并“全局”使用它]
...
actions: {
dragEnd() {
event.blahblah...
}
}
所以,我对此技术有一些疑问:
<div ondragend={{action "dragEnd"}}></div>
)的情况下,它将不使用事件委托,即它将事件处理程序附加到该div
上,而不是将它附加到body
上根据doc是否使用此模式(<div {{action "dragEnd" on="dragEnd"}}></div>
)?首先,您为什么要迁移到{{action "dragEnd" on="dragEnd"}}
?那是最早的余烬行动风格,您不应该使用它们。当使用以ondragend={{action "dragEnd"}}
装饰的新动作时,请使用{{on "dragEnd" this.dragEnd}}
或更好的@action
。如果您在actions
哈希中有操作,请使用{{on "dragEnd" (action "dragEnd")}}
。