当前位置:   article > 正文

element-ui点击el-dropdown-item后,el-dropdown-menu二次触发显示的问题_if (this.triggerelm.disabled) return;

if (this.triggerelm.disabled) return;

问题描述

工作中遇到的问题,点击el-dropdown-item,打开新页面后,由于二次触发导致菜单仍旧显示

点击前

 点击后,进入新页面但是菜单没有消失

 在触发方式为hover时,有时会再次触发下拉菜单显示的效果,查看源码后找到二次触发的原因

触发菜单显示到点击选项期间,鼠标会经过这之间的红色区域,它不属于dropdown,所以此时会先触发hide,再次触发show,而默认展开菜单的延时是250ms,所以当这个过程鼠标过快时,会发生菜单仍旧显示的情况

  1. show() {
  2. if (this.triggerElm.disabled) return;
  3. clearTimeout(this.timeout);
  4. this.timeout = setTimeout(() => {
  5. this.visible = true;
  6. }, this.trigger === 'click' ? 0 : this.showTimeout);
  7. },

我的解决办法就是  继承原来的代码,重写点击选项的方法,再触发点击后清除定时器clearTimeout(this.timeout),这样就可以了

  1. <script>
  2. import { Dropdown } from 'element-ui'
  3. export default {
  4. name: 'FFDropdown',
  5. extends: Dropdown,
  6. methods: {
  7. handleMenuItemClick(command, instance) {
  8. if (this.hideOnClick) {
  9. clearTimeout(this.timeout)
  10. this.visible = false
  11. }
  12. this.$emit('command', command, instance)
  13. }
  14. }
  15. }
  16. </script>

记录一下

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/104858
推荐阅读
相关标签
  

闽ICP备14008679号