当前位置: 首页 > 知识库问答 >
问题:

element-ui - ElementPlus的ElMenuItem的选中状态怎么修改?

金泉
2024-12-17

大家好,有一个这样的需求:
我有一个画图的页面,如果跳转到其他路由页面时,有一个提示,“您的图形是否已经保存”,如果点击“否”,就路由不跳转,如果点击“是”是正常跳转,

我的问题:
现在的问题是只要点击了ElMenuItem选中状态就会选中,如何将选中状态返回到上一个菜单的选中,

我现在的解决方法:
现在我的方法是先拿到页面的document元素ul,再获取所有li元素,循环先移除 is-active 样式,再给需要的菜单增加 is-active 样式

解决方法出现的问题:
但是移除的样式有一个样式错误,而且再点击菜单时,菜单的选中状态也会有一些其他的bug,请问如何去手动修改控制ElMenuItem的样式

我的代码:
第一步:在 router.beforeEach的时候判断from.path是否是图形路由,如果是的话,弹层,是or否,点击否是走下面的代码:

            // 取消时,页面来自于 管路设计/集中控制,则还原导航菜单的选中状态
            if (from.path.includes("piping/plan") || from.path.includes("jizhong/concentrate")) {
              console.log("-----------取消操作");

              // 获取到ul元素 Lis
              const liElements = document.querySelector(".el-menu")?.querySelectorAll("li")

              // 循环遍历所有的 li 元素 移除选中状态
              liElements?.forEach(function (liElement) {
                if (liElement?.classList.contains("is-active")) {
                  liElement?.classList.remove("is-active")
                }
              });

              // 循环遍历所有的 li 元素 添加选中状态
              liElements?.forEach(function (liElement) {
                // 管路设计
                if (from.path.includes("piping/plan") && liElement?.innerHTML.includes(t("routers.gltc"))) { // 管路设计
                  liElement?.classList.add("is-active")
                }

                // 集中控制
                if (from.path.includes("jizhong/concentrate") && liElement?.innerHTML.includes(t("routers.jzlzc"))) { // 集中控制
                  liElement?.classList.add("is-active")
                }
              });
            }
            // 取消 按钮
            next(false)

共有1个答案

佘修为
2024-12-17

每项菜单设置唯一的index,然后通过设置菜单的default-active属性就可以达到高亮的效果吧

 类似资料:
  • elementPlus中怎么给ElTable的th换颜色?试了几种办法都不成功?给所有的ElTable的th的背景修改颜色。不是给单个的。

  • 我想把状态栏的颜色设置为白色,把wifi和电池等图标设置为黑色。我怎么能这样做?。我更喜欢通过使用来完成此操作

  • 现在el-tree点后面和点前面的选择框都可以被选中,怎么设置可以使唤只点后面的文字才能被选中,直接点选择框不切换?

  • html代码是这样的,动态遍历一个树形结构 控制台看到后端传过来是有数据的,是有链接的 我复制图片的链接,且放到地址栏,回车是可以下载图片。我也有试过写死在img标签,页面能正常显示,说明链接是正常的 树形结构最后一层是没有显示图片。 注:我猜想是只有最后一层才有图片的原因造成的,所以我有些判断v-if,有值才加载。但结果都没显示,前端vue.js的语法不知道怎么写了。所以请问大家,这个得怎么把图

  • storeHeader Header组件 index.vue detail.vue 现在的情况是我从index进入detail页面,页面会执行dark.value = true开启顶部暗黑 但是在detail页面F5刷新后则不会,需要将dark.value = true放在onMounted中或则延时执行,这种就会出现页面加载完后再载入class,页面就会闪一下,相当于动态添加了class 有没有

  • 为什么要弄个el-button,还有弄个ElButton,用一个不行吗?还要分成2个?

  • UI状态伪类选择器,用于选择处于某种状态下的UI元素,主要用于HTML表单上,根据表单元素的不同状态,定义不同的样式,来增强用户体验。 表单元素的状态包括获得焦点、失去焦点、选中、未选中、可用、不可用、有效、无效、必填、选填、只读等等。 表 2-10 UI状态伪类选择器 选择器 功能描述 版本 E:focused 选择表单中获得焦点的元素 3 E:checked 选择表单中被选中的radio或者c