vue基于element路由侧边栏名字跳转

安装路由

在终端用下面语句安装vue的路由,@后面的4是版本号,下载时可自定义版本。

npm install vue-router@4

在main.js中配置路由

import Vue from 'vue'
import App from './App.vue'
//全局引入(在实际项目都是做的按需引入,我这里偷懒就没做了)
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
//引入路由
import router from '../router'

Vue.config.productionTip = false
Vue.use(ElementUI)


new Vue({
  router,
  render: h => h(App),
}).$mount('#app')

#新建一个router文件夹管理路由
有些可能在src文件夹下自带router文件夹,在下面新建index.js管理路由。下面是一个简单例子

import Vue from 'vue'
import VueRouter from 'vue-router'


Vue.use(VueRouter)

export default new VueRouter({
    routes: [
      {
        path:'/',
        name:'Main',
        component: ()=>import('../views/Main.vue'),
        children:[
          {
            path:'home',
            name:'Home',
            component:()=>import('../views/Home')
          }, 
          
          {
            path:'user',
            name:'User',
            component:()=>import('../views/User')
          }
        ]
      } 
    ]
  });

对App.vue做修改

<template>
  <div id="app">
      <router-view></router-view> 
  </div>
</template>

<script>

export default {
  name: 'App'
}
</script>

<style>
html,body{
  margin: 0;
  padding: 0;
}
#app {
  height: 100vh;
}
</style>

对公共侧边栏CommandAside.vue做路由配置。

引入element侧边栏等

一定不要忘记在加router!!!
在这里插入图片描述
将点击跳转写在el-menu-item中:@click=“clickMenu(item)”

<template>
    <el-menu default-active="1-4-1" class="el-menu-vertical-demo"  router active-text-color="#409EFF" @open="handleOpen" @close="handleClose" :collapse="isCollapse">
  <h3>火车站管理系统</h3>
    <el-menu-item  v-for="item in noChildren" :index="item.path" :key="item.path" @click="clickMenu(item)">
    <i :class="'el-icon-'+item.icon"></i>
    <span slot="title">{{item.label}}</span>
</el-menu-item>
</el-menu>
</template>

在下面的method中实现编程式跳转

clickMenu(item){
      this.$router.push(//页面跳转
        {
          name:item.name
        }
      )   
    }

注意用name跳转的原因是我定义了name的属性。但是在整个编程过程中你会发现,定义了很多name。经过我自己的测试,我发现不同.vue文件下name名不相同不影响它的跳转。只要保证它们对于的path是一样的就行。(可能name的作用就是方便函数编程吧)

下面是完整代码。
我只对首页和用户管理也做了路由。其他还没来得及写。

<template>
    <el-menu default-active="1-4-1" class="el-menu-vertical-demo"  router active-text-color="#409EFF" @open="handleOpen" @close="handleClose" :collapse="isCollapse">
  <h3>火车站管理系统</h3>
    <el-menu-item  v-for="item in noChildren" :index="item.path" :key="item.path" @click="clickMenu(item)">
    <i :class="'el-icon-'+item.icon"></i>
    <span slot="title">{{item.label}}</span>
</el-menu-item>
</el-menu>
</template>

<style lang="less" scoped>
  .el-menu-vertical-demo:not(.el-menu--collapse) {
    width: 200px;
    min-height: 400px;
  }
  .el-menu{
    height: 100%;
    border: none;
    h3{
      color: #409EFF;
      text-align:center;
      line-height: 48px
    }
  }
  
</style>

<script>
  export default {
    data() {
      return {
        isCollapse: false,
        menu:[
          {
            path:'/home',
            name:'home',
            label:'系统首页',
            icon:'s-home',
            url:'Home/Home'
          },
          {
            path:'/euser',
            name:'euser',
            label:'系统用户管理',
            icon:'user'
          },
          {
            path:'/pot',
            name:'pot',
            label:'火车站点管理',
            icon:'s-claim'
          },
          {
            path:'/times',
            name:'times',
            label:'火车车次管理',
            icon:'s-shop'
          },
          {
            path:'/journey',
            name:'journey',
            label:'列车行程安排',
            icon:'date'
          },
          {
            path:'/user',
            name:'user',
            label:'乘客信息管理',
            icon:'postcard'
          },
          {
            path:'/timescheck',
            name:'timeschick',
            label:'火车车次查询',
            icon:'set-up'
          },
          {
            path:'/tickercheck',
            name:'tickercheck',
            label:'售票记录查询',
            icon:'tickets',
          },
          {
            path:'/tickerdelete',
            name:'tickerdelete',
            label:'退票查询',
            icon:'refresh-left'
          }  
        ]
      };
    },
    methods: {
      handleOpen(key, keyPath) {
        console.log(key, keyPath);
      },
      handleClose(key, keyPath) {
        console.log(key, keyPath);
      }
    },
    clickMenu(item){
      this.$router.push(//页面跳转
        {
          name:item.name
        }
      )   
    },
    computed:{
      noChildren(){
       return this.menu.filter(item =>!item.Children)//过滤元组
      }
    }
  }
</script>

结果展示

在这里插入图片描述
点击系统首页,最上面的路径可以看出以及进入\home,我在这个界面就写了“主页面”三个字做测试,测试成功。

最后一定要把router写在el-menu里面!!!!这个是element组件,一定要做路由才行。

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

caroline~安

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值