秘银上的事件捕获?
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
之后解决,即使前者正在捕获而后者正在冒泡 - 您可能需要改用 mousedown
。 Here's a demo showing how to bind capturing events and logging the sequence of different events.
没有事件捕获吗? 我想强制事件处理顺序,在自动完成组件中,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
之后解决,即使前者正在捕获而后者正在冒泡 - 您可能需要改用 mousedown
。 Here's a demo showing how to bind capturing events and logging the sequence of different events.