elementui NavMenu导航菜单在路由跳转失败后,active样式仍按跳转后的路径显示

问题描述:

  点击导航栏时,如果当前页面内容仍在播放,则先确认是否跳转,若确认跳转则执行xxx关闭播放再进行跳转;若取消跳转,则不进行跳转。此时出现问题:取消跳转后虽然实际并未跳转,但导航栏active样式已经生效到点击项。

路由跳转前代码如下:

 1 beforeRouteLeave(to, from, next) {
 2         if (this.isStart) {
 3             this.$confirm('当前有场景正在回放,是否切换页面?', '提示', {
 4                 confirmButtonText: '确定',
 5                 cancelButtonText: '取消',
 6                 type: 'warning'
 7             })
 8                 .then(() => {
 9                     if (this.xlname == '') return;
10                     this.order = 3;
11                     this.suspend = 3;
12                     this.startStop = 1;
13                     this.startStopicon = require('@/assets/img/video/pause.png');
14                     this.isSuspend = !this.isSuspend;
15                     var param = {
16                         id: this.activeId,
17                         order: this.order,
18                         rate: this.rate,
19                         startTime: this.startTime,
20                         type: 2
21                     };
22                     window.localStorage.setItem('replay', JSON.stringify(param));
23                     replay(param).then((res) => {
24                         if (res.code === 200) {
25                             debugger;
26                             next();
27                         }
28                     });
29                 })
30                 .catch(() => {
31                     console.log('@@@');
32                     //bus.$emit('deilverTitle', 'xxxx');
33                 });
34         } else {
35             next();
36         }
37     },

解决方法:

1、首先尝试更改导航栏中active属性在哪项中,但效果不对

2、直接替换active属性,将active对应样式修改成普通样式,再加isSelected属性来重新标志当前选中项,代码如下:

 1 <div class="sidebar">
 2         <el-menu
 3             class="sidebar-el-menu"
 4             :default-active="onRoutes"
 5             :collapse="collapse"
 6             background-color="#0c1119"
 7             text-color="#fff"
 8             active-text-color="#fff"
 9             router
10         >
11             <template v-for="item in items">
12                 <template v-if="item.subs">
13                     <el-submenu :index="item.index" :key="item.index">
14                         <template slot="title">
15                             <i :class="item.icon"></i>
16                             <span slot="title">{{ item.title }}</span>
17                         </template>
18                         <template v-for="subItem in item.subs">
19                             <el-submenu v-if="subItem.subs" :index="subItem.index" :key="subItem.index">
20                                 <template slot="title">{{ subItem.title }}</template>
21                                 <el-menu-item v-for="(threeItem, i) in subItem.subs" :key="i" :index="threeItem.index" :class="threeItem.index==onRoutes?'isSelected':''">{{
22                                     threeItem.title
23                                 }}</el-menu-item>
24                             </el-submenu>
25                             <el-menu-item v-else :index="subItem.index" :key="subItem.index" :class="subItem.index==onRoutes?'isSelected':''">{{ subItem.title }}</el-menu-item>
26                         </template>
27                     </el-submenu>
28                 </template>
29                 <template v-else>
30                     <el-menu-item :index="item.index" :key="item.index" :class="item.index==onRoutes?'isSelected':''">
31                         <i :class="item.icon"></i>
32                         <span slot="title">{{ item.title }}</span>
33                     </el-menu-item>
34                 </template>
35             </template>
36         </el-menu>
37     </div>
1 .isSelected {
2     background: linear-gradient(90deg, #4b83b1 5%, rgb(33, 36, 49) 70%) !important;
3     color:rgb(161, 183, 217) !important;
4 }
1 computed: {
2         onRoutes() {
3             return this.$route.path.replace('/', '');
4         }
5     },

onRoutes用来获取当前路径,与比较菜单路径判定isSelected。

 

posted @ 2022-07-14 11:38  夜奔真刚  阅读(1148)  评论(0)    收藏  举报