在vuejs项目中,我使用vue事件总线,如this。发出此事件:
icontag.addEventListener('click', testFunction, false)
function testFunction () {
console.log('click1')
Events.$emit('click2')
}
在另一个模块中接收它,我得到一个click1输出,但多次click2' s。它看起来非常像每次有一些代码需要webpack导入/导出它会在同一事件的事件总线上触发一个额外的结果...,或者某种东西......,因为在chrome devtools中相关的代码接近click2& #39; s附近有代码__WEBPACK_IMPORTED_MODULE_5__util
。
知道发生了什么事吗?
编辑: 我认为它可能是一个损坏的热重载设置'。重建dev热重建版后,问题现在似乎已经消失。仍然对类似的经历感兴趣,因为这个问题非常丑陋和持久。
答案 0 :(得分:1)
我认为Bert的评论是正确的。实际上,您可以在同一事件上多次注册相同的事件处理程序。
尝试在再次添加之前删除eventhandler。
icontag.removeEventListener("click", testFunction);
icontag.addEventListener('click', testFunction, false)
function testFunction () {
console.log('click1')
Events.$emit('click2')
}