Closed mofeisike closed 5 years ago
已解决 阻止传播就好
handleShow(e) {
const targetDimensions = this.$refs.box.getBoundingClientRect();
const postition = {
top: Math.random() * targetDimensions.height + targetDimensions.top,
left: Math.random() * targetDimensions.width + targetDimensions.left,
}
//阻止冒泡
e.stopPropagation();
this.$refs.contextmenu.show(postition);
},
这样也可以,不用原生的js阻止事件的冒泡, 用vue的更好点
<button @click.stop="handleShow">显示</button>
我封装了你的子菜单和菜单项 ,你的案例的CustomShow.vue, 一开始没有出现菜单, 我调试了一遍, 在一个按钮按下后, 发现在执行了handleShow方法后, 确实出现了, visible等于true, 但是后来, 不知道为什么触发了handleBodyClick(), 就是好像有一些东西点击了菜单外, 引起的隐藏菜单,为什么呢?