对于ElementUI 水平导航菜单click点击body不消失的问题

1,792 阅读1分钟

最近在用 ElementUI 写水平导航菜单的时候发现如果 menu-trigger 设置为 click 模式的话,点击导航唤起submenu子菜单后,再点击除导航相关外的任意地方,唤起的菜单都不会收起,期望是点击其他地方导航收起,看了api没有相关属性,于是打算手动操作,以下是爬坑过程

首先我api中提到了 close 方法,需要传一个 index 参数,来关闭指定 index 的 submenu ,通过 Vue 的 devtools 可以看到,每点击导航栏会触发 open 方法,可以获取当前点击导航的 index ,于是我存下了这个 index ,给 el-menu 外面套一层 div 或者 nav 并且设置 @click.stop(阻止冒泡),点击 body 时,触发 el-menu 的 close 事件,传的参数是刚刚存的 index ,注意,这个参数得是字符串,所以如果你发现没有触发 close ,考虑下是不是参数的问题,最后圆满解决问题啦。我是把导航抽成了一个组件,所以还涉及了 vue 的父子组件传递状态,稍微注意下就好。

没有找到相关的解决办法,就采用了这个有点笨的方式,希望这篇文章对大家有帮助~