【发布时间】:2020-07-28 04:32:05
【问题描述】:
让我们考虑使用 KnockoutJS 将通用事件绑定到 ViewModel 方法的标准方法:
<div data-bind="event: { mousedown: handler }"></div>
此代码会将handler 作为mousedown 事件的侦听器添加到<div>。与任何其他处理程序一样,它附加到事件的目标和冒泡阶段。
但是,我看不到一种方法可以将处理程序附加到事件的 capture phase,而无需在 Knockout JS 提供的 MVVM 模式之外手动调用 addEventListener。
是否可以在 Knockout JS 中使用 data-bind 将处理程序绑定到事件捕获阶段?
【问题讨论】:
-
创建一个调用
handler1和handler2的包装函数,并且自身返回true? -
感谢您的回复@dperry!也许我没有问正确:我不想将
handler1和handler2包装在一起(我已经为此使用了包装函数),我想声明一个附加到捕获阶段的事件处理程序事件:quirksmode.org/js/events_order.html -
虽然不是最佳实践,但您可以内联它:
data-bind="event: { mousedown: function(){handler1();handler2();return true;} }" -
我会更新问题以使其更清晰;)
标签: javascript knockout.js event-handling dom-events