KnockoutJS:处理事件捕获阶段
KnockoutJS: Handle event capture phase
本文关键字:处理事件 KnockoutJS 更新时间:2023-09-26
让我们考虑使用KnockoutJS:将通用事件绑定到ViewModel方法的标准方法
<div data-bind="event: { mousedown: handler }"></div>
此代码将把handler
作为mousedown
事件的侦听器添加到<div>
。与任何其他处理程序一样,它被附加到事件的目标和气泡阶段。
然而,在Knockout JS提供的MVVM模式之外,如果不手动调用addEventListener
,我看不到将处理程序附加到事件的捕获阶段的方法。
是否可以使用Knockout JS中的data-bind
将处理程序绑定到事件捕获阶段
当您需要执行现有绑定处理程序无法执行的DOM操作时,您可以编写一个自定义绑定处理程序。以下是捕获阶段事件处理程序的简单演示。您必须查看调试控制台才能看到输出。
ko.bindingHandlers.captureEvent = {
init: function (element, valueAccessor) {
var arg = valueAccessor();
for (var eventName in arg) {
element.addEventListener(eventName, arg[eventName], true);
}
}
};
vm = {
handler: function (event) {
console.debug(event.currentTarget.id);
}
};
ko.applyBindings(vm);
#d1 {
background-color: red;
height: 35em;
width: 35em;
}
#d2 {
background-color: green;
height: 25em;
width: 25em;
}
#d3 {
background-color: blue;
height: 15em;
width: 15em;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<div id="d1" data-bind="captureEvent: {mousedown: handler}">
<div id="d2" data-bind="captureEvent: {mousedown: handler}">
<div id="d3" data-bind="captureEvent: {mousedown: handler}"></div>
</div>
</div>
相关文章:
- 如何通过bxSlider回调api处理事件
- 在Kinetic.js中通过多层处理事件
- 使用自定义数据属性或将数据绑定到处理程序来处理事件
- HTML5拖放;Drop-使用jQuery处理事件
- 如何查找触发或处理事件的 Javascript
- 在 Web 应用中处理事件跟踪的最佳(高性能)方法
- Dojo表单处理事件
- 更改可观察数组会更改自定义绑定处理程序knockoutjs的可见性
- CSS Javascript在1 onClick上处理2事件
- 如何在父视图中绑定子视图处理事件的上下文
- 通过更改HTML元素上的动态类名来处理事件列表器
- 如何在三星智能电视中使用按钮处理事件
- 如何获取表单处理事件
- 如何使用 Web 应用处理事件
- JQuery 处理事件,但不执行函数
- 如何在 jsdoc 中使用@fires处理事件名称中的点
- jqGrid如何处理事件在编辑列后输入键,这要归功于editRow
- 尝试在状态“root.loaded.saved”中处理事件“成为无效”
- 用于处理事件的 Jquery UI 滑块
- KnockoutJS:处理事件捕获阶段