项目实训记录(十一)——Vue中路由嵌套和路由传参

目录

一、做了什么?

二、问题及解决办法

2.1 问题

2.1.1想要的结果

2.1.2 问题分析

2.2 解决方法-Vue中路由嵌套和路由传参

2.2.1 Vue路由嵌套介绍

2.2.2 vue的路由传参

2.2.3 问题解决

总结


一、做了什么?

本周要完成数据去重工作和前端的完善。

清理工作

        主要是来删除用户插入的重复数据。由管理员决定表是否允许重复数据。如果用户上传的表不允许,则在用户上传数据后调用去重方法;如果表允许重复,则不用调用。

        另外,在管理员端添加管理表是否允许去重功能。可以进行编辑。编辑时,如果由不允许重复改为允许重复,则不变;如果由允许重复改为不允许重复,则调用数据去重方法。

前端完善

        增加一个欢迎界面。

        增加提示信息。

        增加上一步按钮。

本次主要在增加欢迎界面时遇到了vue路由传参问题。

二、问题及解决办法

2.1 问题

2.1.1想要的结果

在欢迎界面显示当前管理员名字。结果发现参数管理员姓名传不过来。

2.1.2 问题分析

在界面使用了导航菜单的default-active,表明当前激活菜单的 index。

 <el-aside :width="isCollapse ?'64px':'200px'">

        <div class="toggle-button" @click="toggleCollapse">|||</div>

        <el-menu

          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
         
          :collapse="isCollapse"
          :collapse-transition="false"
          :router="true"
          :default-active="activePath">

          <el-submenu index="6">
            <template slot="title">
              <i class="el-icon-money"></i>
              <span>用户信息</span>
            </template>

            <el-menu-item index="/uinfo" @click="saveNavState('/uinfo')">
              <template slot="title">
                <i class="el-icon-menu"></i>
                <span>查看用户信息</span>
              </template>
            </el-menu-item>
          </el-submenu>
      </el-menu>
</el-aside>

利用saveNavState()方法来进行index的替换。但是现在需要的是欢迎界面,且欢迎界面需要当前界面传递参数管理员信息。

所以首先需要在created()中进行变量的activePath的初始化,同时要加参数。

2.2 解决方法-Vue中路由嵌套和路由传参

2.2.1 Vue路由嵌套介绍

        vue中路由是通过vue的插件vue-router来实现的 ,vue中路由有两种模式 hash模式(默认) history模式 ,根据不同的路径显示不同的组件。

 一级路由格式:

 //路由懒加载模式
{
          path: '/home1',
          name: 'home1',
          component: () => import('@/views/ModifyDB/index.vue')
 },
//重定向模式
{
          path: '/home',
          name: 'home',
          //重定向页面
          redirect: '/home/stepOne',
          component: () => import('../views/home')
}

二级路由模式:

    {
      path: '/z1',
      name: 'z1',
      component: () => import('./views//qza/z1.vue'),
      redirect: './z2',//默认主页 这里是重定向的使用快捷方式
      children:[
        {
          path: '/z2',
          name: 'z2',
          component: () => import('./views//qza/z2.vue'),
        },
      ]
    }

2.2.2 vue的路由传参

query方式:

​ 	//编程导航的语法
​ 		*this.$router.push('/path?参数=值')*
​	//获取:
​ 		*this.$route.query.参数名*

params方式:
1.需要先进行路由配置
2.​ params传参把名和值分开 参数名在路由配置中写 值在导航中写

 //1、修改路由配置
​ 	   *path:"/path/:参数名"*
​ //2、视图导航语法

       *​ this.$router.push({name:'',params:{参数名:值}})*
​ //获取:
       ​*this.$route.params.参数名*

2.2.3 问题解决

我的代码解决:

1.修改路由

//把path改为"/path/:参数名" 形式
//path: '/:aaname'表示path为/‘’参数名为aaname
{
      path: '/main',
      name: 'HelloWorld',
      component: Gindex,
      children: [
        {
          path: '/:aaname',
          component: () => import('@/views/huanying/HuanYing.vue'),
          name: 'huanying',
          meta: {
            title: "工作台",
            icon: 'el-icon-s-home',
            roles: ['admin','jerry']
          }
        },
        {path: '/0-0', component: xxxx},
        {path: '/0-1', component: xxxx},
        {path: '/1-1', component: xxxx},  
     ]
}

2.在created()方法中获取activePath为欢迎界面,同时利用params方式传递参数。

//传参方式:activePath/参数    activePath:想要到界面的path
this.activePath = window.sessionStorage.getItem('activePath')+'/'+this.aaname;

导航菜单的default-active直接激活调用欢迎界面并传递参数

3.页面获取

 //获取方式//获取:*this.$route.query.参数名*
created(){

    this.aname=this.$route.query.aaname
    this.aname=JSON.parse(localStorage.getItem("admin"))
    
    },

问题就解决啦!


总结

本文主要对Vue中路由嵌套和路由传参进行介绍。之后再利用路由传参时要注意格式。和window.sessionStorage.getItem()、window.sessionStorage.setItem()页面暂存方法的使用。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值