Aurelia 委托 VS 触发器: 如何知道何时使用委托或触发器?

我正在学习如何使用 Aurelia 框架。这样做时,我正在阅读关于绑定事件方法的 给你文档。文档建议在默认情况下使用委托。我分叉了他们在其中一篇博客文章中提供的 plunkr,并在其中添加了一些内容。完整的音乐是 给你


应用程序

<template>
<input value.bind="pageInput" blur.delegate="showAlert()" placeholder="delegate()" />
<input value.bind="pageInput" blur.trigger="showAlert()" placeholder="trigger()" />


<button type="button" click.delegate="showAlert()">delegate()</button>
<button type="button" click.trigger="showAlert()">trigger()</button>
</template>

应用程序

export class App {
showAlert() {
alert('showAlert()');
}
}

正如你所看到的普朗克,所有的 模糊触发器/点击。委托/点击。触发器发射的事件,但 模糊,授权没有。

为什么会这样?

如何确定 .delegate什么时候不能工作(当然不需要手动测试) ?

24576 次浏览

除非不能使用 delegate,否则请使用 delegate

事件委托是一种用于提高应用程序性能的技术。通过利用大多数 DOM 事件的“冒泡”特性,它大大减少了事件订阅的数量。使用事件委托,处理程序不会附加到单个元素。相反,将单个事件处理程序附加到顶级节点(如 body 元素)。当事件冒泡到这个共享顶级处理程序时,事件委托逻辑根据事件的 目标调用适当的处理程序。

要找出 活动代表团是否可以用于一个特定的事件,谷歌 mdn0。事实上,在任何与谷歌搜索有关的网络平台之前,使用 mdn的 Mozilla Developer Network 往往会返回高质量的搜索结果。一旦进入事件的 MDN 页面,检查事件 bubbles是否。只有冒泡的事件可以用 Aurelia 的 delegate绑定命令来使用。mdn1

这里是 模糊的 MDN 页面。它有进一步的信息,事件委托技术的模糊和重点事件。

上述一般指导意见的例外情况:

满足下列条件时,按钮应使用 trigger:

  1. 你得关掉按钮。
  2. 按钮的内容由其他元素组成(而不仅仅是文本)。

这将确保点击禁用按钮的子按钮不会冒泡到委托事件处理程序。

在某些 iOS 用例中使用 trigger作为 click:

除了 abuttoninputselect之外,iOS 不会在其他元素上冒泡单击事件。如果您在非输入元素(如 div)上订阅 click,并且目标是 iOS,请使用 trigger绑定命令。 更多信息 给你给你

关于这一点,如果 Aurelia 在捕获阶段监听事件,则模糊委托可以工作,但这在 Aurelia 中是不可行的。如果有人能提供一些如何在奥里利亚捕捉事件的提示,那将会很有趣

在这种情况下,以下措施将会奏效:

<template>
<input blur.delegate-capture='showAlert()' />
</template>