秘银上的事件捕获?

Event capture on mithril?

没有事件捕获吗? 我想强制事件处理顺序,在自动完成组件中,onblur 事件在单击列表中的项目之前触发,导致列表切换两次,因此在闪烁后保持可见。

显然不支持捕获,尽管 google 显示 m.capture 多年前的方法。您只需使用 true 参数注册 eventListener,因为它必须被捕获,我想在处理程序的末尾调用 m.redraw()。

Mithril 中的事件绑定是一个非常简单的便利功能,代表使用标准非捕获 addEventListener 绑定事件,并自动排队重新绘制分辨率(这与其他视图库形成对比,如React,其中事件绑定是一个精心设计的、自成体系的系统)。

当您想以不同的方式做事时,Mithril 允许您访问内联生命周期方法,从而很容易进入直接 DOM 访问。具体来说,the oncreate method will let you bind events however you choose.

m('div', {
  // this
  onclick : e => {},
  // is the same as this
  oncreate: vnode => {
    vnode.dom.addEventListener('click', e => {
      m.redraw()
    })
  },
})

请注意,click 事件将始终在 blur 之后解决,即使前者正在捕获而后者正在冒泡 - 您可能需要改用 mousedownHere's a demo showing how to bind capturing events and logging the sequence of different events.