Aurelia委托vs触发器:你如何知道何时使用委托或触发器
Aurelia delegate vs trigger: how do you know when to use delegate or trigger?
我正在努力学习如何使用Aurelia框架。在这样做的过程中,我阅读了这里关于绑定事件方法的文档。文档建议在默认情况下使用delegate。我已经分叉了他们在一篇博客文章中提供的plunkr,并添加了一点。完整的plunk在这里。
app.html
<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>
app.js
export class App {
showAlert() {
alert('showAlert()');
}
}
正如您在plunkr中看到的那样,blur.trigger/click.delegate/click.trigger都会触发事件,但blur.delegate不会。
为什么会这样
如何确定.delegate
何时不起作用(当然不需要手动测试)
除非不能使用delegate
,否则请使用delegate
事件委派是一种用于提高应用程序性能的技术。它通过利用";冒泡";大多数DOM事件的特征。使用事件委派,处理程序不会附加到单个元素。相反,将单个事件处理程序附加到顶级节点(如body元素)。当事件冒泡到此共享顶级处理程序时,事件委派逻辑会根据事件的目标调用适当的处理程序。
要了解事件委派是否可以用于特定事件,请谷歌mdn [event name] event
。事实上,在任何与网络平台相关的谷歌搜索之前,使用mdn
通常会从Mozilla开发者网络返回高质量的结果。进入事件的MDN页面后,请检查事件是否为bubbles
。只有冒泡的事件才能与Aurelia的delegate
绑定命令一起使用blur
、focus
、load
和unload
事件没有气泡,因此您需要使用trigger
绑定命令来订阅这些事件
这是模糊的MDN页面。它有关于模糊和焦点事件的事件委派技术的进一步信息。
上述一般指导的例外情况:
当满足以下条件时,在按钮上使用trigger
:
- 您需要禁用该按钮
- 按钮的内容由其他元素组成(而不仅仅是文本)
这将确保对禁用按钮的子项的单击不会冒泡到委托事件处理程序中。点击此处了解更多信息。
在某些iOS用例中,将trigger
用于click
:
iOS不会在a
、button
、input
和select
以外的元素上设置气泡点击事件。如果您在非输入元素(如div
)上订阅click
,并且目标是iOS,请使用trigger
绑定命令。更多信息请点击此处。
关于这一点,如果Aurelia在捕获阶段监听事件,则模糊委托将起作用,但这在Aurelia中是不可行的。如果有人能提供一些如何在Aurelia 中捕捉事件的提示,那将是一件有趣的事情
在这种情况下,以下将起作用:
<template>
<input blur.delegate-capture='showAlert()' />
</template>
- 如何使用jquery在填充自动完成的值后使文本框只读
- JQuery使计数器每次更改时都会增加
- 如何使Javascript动态html表及其上的事件
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 如何使用phaser使html5游戏在移动设备浏览器上运行
- Javascript/AngularJS:如何使点击事件触发器成为父级
- HTML 表单,使 Tab 键触发器缩进
- jQuery - 触发器功能使我的页面不停地重新加载
- 如何使onEdit()触发器函数应用于多个工作表
- 何时在angularjs中使用工人和工厂功能
- Aurelia委托vs触发器:你如何知道何时使用委托或触发器
- 具有多个触发器的一键式事件可使内容上下滑动
- 使引导弹出窗口出现在与其触发器不同的元素上
- 任何方法,使一个触发器或按钮,让用户按下和运行,而不是去脚本编辑器
- 我如何使一个jquery styleBox触发器聚焦时使用标签
- 如何在复选框或单选上使用jQuery触发器,使其与用户单击它完全相同
- 使占位符中的所有按钮具有相同的单击事件触发器
- 如何使触发器点击事件在关闭事件后工作
- 离开和重新进入图片库时,无论何时单击上一张/下一张照片按钮,都会使您浏览的照片数量增加一倍.知道为什么吗?
- jQuery:鼠标悬停使图像可见,具有相同的最后4个数字在他们的id作为触发器