fix: handleMenuClick trigger multiple times

1. handleMenuClick listerner not removed on menu hide
This commit is contained in:
Mr.Bai 2020-08-12 10:41:10 +08:00 committed by Moyee
parent 55ab1fe74a
commit c3b16ccee4

View File

@ -118,7 +118,11 @@ export default class Menu extends Base {
const handleMenuClick = this.get('handleMenuClick') const handleMenuClick = this.get('handleMenuClick')
if (handleMenuClick) { if (handleMenuClick) {
menuDom.addEventListener('click', handleMenuClick); const handleMenuClickWrapper = (evt) => {
handleMenuClick(evt.target, e.item)
}
this.set('handleMenuClickWrapper', handleMenuClickWrapper)
menuDom.addEventListener('click', handleMenuClickWrapper);
} }
const graph: Graph = this.get('graph'); const graph: Graph = this.get('graph');
@ -166,9 +170,9 @@ export default class Menu extends Base {
// 隐藏菜单后需要移除事件监听 // 隐藏菜单后需要移除事件监听
document.body.removeEventListener('click', this.get('handler')); document.body.removeEventListener('click', this.get('handler'));
const handleMenuClick = this.get('handleMenuClick') const handleMenuClickWrapper = this.get('handleMenuClickWrapper');
if (handleMenuClick) { if (handleMenuClickWrapper) {
menuDom.removeEventListener('click', handleMenuClick) menuDom.removeEventListener('click', handleMenuClickWrapper);
} }
} }
@ -176,9 +180,9 @@ export default class Menu extends Base {
const menu = this.get('menu') const menu = this.get('menu')
const handler = this.get('handler'); const handler = this.get('handler');
const handleMenuClick = this.get('handleMenuClick') const handleMenuClickWrapper = this.get('handleMenuClickWrapper');
if (handleMenuClick) { if (handleMenuClickWrapper) {
menu.removeEventListener('click', handleMenuClick) menu.removeEventListener('click', handleMenuClickWrapper);
} }
if (menu) { if (menu) {