vue路由结构可设一层方便动态添加路由操作


Posted in Javascript onAugust 31, 2020

动态添加路由基本功能

let routes=[{ path: '/login', name: 'login', component: () => import('../components/Login.vue') }]

this.$router.addRoutes(routes)

涉及多层路由嵌套 如图

vue路由结构可设一层方便动态添加路由操作

单纯使用addRoutes 层级结构不同

修改路由结构

例:

{
     name:'account',
     path: '/account/account',
     meta: {
      title: '个人中心',
      requireAuth: true
     },
     component: account,
     children:[
      {
       name: 'account',
       path: '/account/account',
       meta: {
        title: '账号设置',
        requireAuth: true
       },
       component: setAccount,
      },
      {
       name: 'childMgt',
       path: '/account/childMgt',
       meta: {
        title: '子账号管理',
        requireAuth: true
       },
       component: childMgt,
      },
      
     ]
},

修改单一结构

{
     name:'account',
     path: '/account/account',
     meta: {
      title: '个人中心',
      requireAuth: true
     },
     component: account,
     children:[
      {
       name: 'account',
       path: '/account/account',
       meta: {
        title: '账号设置',
        requireAuth: true
       },
       component: setAccount,
      },
     ]
},
{
     name:'account',
     path: '/account/childMgt',
     meta: {
      title: '个人中心',
      requireAuth: true
     },
     component: account,
     children:[
      {
       name: 'userMgt',
       path: '/account/childMgt',
       meta: {
        title: '子账号管理',
        requireAuth: true
       },
       component: childMgt,
      },
     ]
},

每一层单独包含一个子集合方便权限管理动态添加

main.js

router.beforeEach((to, from, next) => {
 if (from.name == null) { //页面刷新
 let pathName = sessionStorage.getItem("pathName") //暂存上一个路由
 if (pathName == to.path||pathName==to.redirectedFrom) {
 } else {
  sessionStorage.setItem("pathName", to.redirectedFrom)
 }
 } else {
  sessionStorage.setItem("pathName", to.path)
 }
 next()
})

app.vue

let routes=[处理后路由信息]
this.$router.addRoutes(routes)
this.$nextTick(i=>{
  this.$router.replace(sessionStorage.getItem("pathName"))//跳转指定地址 否则404
})

补充知识:vue路由进入下一层返回上一层重复跳转之前进入页面

说明

vue路由返回上一层,使用 this.$router.back(-1)

进入其他页面用 this.$outer.push('home')

这样当我进入页面会发生如下场景

进入页面时:A-B-C

返回页面时:C-B-A

总的路径行程:A-B-C-B-A

总的来是:页面返回时重复返回上一层

解决

官方文档

vue路由结构可设一层方便动态添加路由操作

this.$outer.push('home') // 会重复添加路由信息进入路由记录

this.$outer.replace('home') // 会替换之前的路由记录

this.$outer.replace('home') // 跳转页面推荐用这个

以上这篇vue路由结构可设一层方便动态添加路由操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
小议javascript 设计模式 推荐
Oct 28 Javascript
基于jQuery的树控件实现代码(asp.net+json)
Jul 11 Javascript
2012年开发人员的16款新鲜的jquery插件体验分享
Dec 28 Javascript
uploadify在Firefox下丢失session问题的解决方法
Aug 07 Javascript
JavaScript判断密码强度(自写代码)
Sep 06 Javascript
Javascript变量的作用域和作用域链详解
Apr 02 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
Apr 15 Javascript
JavaScript取得WEB安全颜色列表的方法
Jul 14 Javascript
jquery插件jquery.nicescroll实现图片无滚动条左右拖拽的方法
Aug 10 Javascript
layui选项卡效果实现代码
May 19 Javascript
vue.js加载新的内容(实例代码)
Jun 01 Javascript
详解解决小程序中webview页面多层history返回问题
Aug 20 Javascript
element-ui tree结构实现增删改自定义功能代码
Aug 31 #Javascript
vue elementui tree 任意级别拖拽功能代码
Aug 31 #Javascript
Element-ui树形控件el-tree自定义增删改和局部刷新及懒加载操作
Aug 31 #Javascript
JS遍历树层级关系实现原理解析
Aug 31 #Javascript
Element-ui el-tree新增和删除节点后如何刷新tree的实例
Aug 31 #Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 #Javascript
浅析 Vue 3.0 的组装式 API(一)
Aug 31 #Javascript
You might like
用在PHP里的JS打印函数
2006/10/09 PHP
如何将一个表单同时提交到两个地方处理
2006/10/09 PHP
php懒人函数 自动添加数据
2011/06/28 PHP
Window下PHP三种运行方式图文详解
2013/06/11 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
php使用正则表达式进行字符串搜索的方法
2015/03/23 PHP
如何解决PHP使用mysql_query查询超大结果集超内存问题
2016/03/14 PHP
JavaScript方法和技巧大全
2006/12/27 Javascript
用YUI做了个标签浏览效果
2007/02/20 Javascript
javascript笔试题目附答案@20081025_jb51.net
2008/10/26 Javascript
avalon js实现仿微博拖动图片排序
2015/08/14 Javascript
JS实现先显示大图后自动收起显示小图的广告代码
2015/09/04 Javascript
js实现简单排列组合的方法
2016/01/27 Javascript
Bootstrap的基本应用要点浅析
2016/12/19 Javascript
Angular.js自定义指令学习笔记实例
2017/02/24 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
js实现验证码功能
2020/07/24 Javascript
[06:53]2018DOTA2国际邀请赛寻真——为复仇而来的Newbee
2018/08/15 DOTA
Python中使用摄像头实现简单的延时摄影技术
2015/03/27 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
python实现多线程的两种方式
2016/05/22 Python
在django-xadmin中APScheduler的启动初始化实例
2019/11/15 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
2020/02/17 Python
CSS超出文本指定宽度用省略号代替和文本不换行
2016/05/05 HTML / CSS
Brookstone美国官网:独特新奇产品
2017/03/04 全球购物
加拿大领先的优质厨具产品在线购物网站:Golda’s Kitchen
2017/11/17 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
广州一家公司的.NET面试题
2016/06/11 面试题
四风问题查摆剖析材料
2014/10/11 职场文书
学生打架检讨书
2014/10/20 职场文书
同步小康驻村工作简报
2015/07/20 职场文书
浅谈Mysql多表连接查询的执行细节
2021/04/24 MySQL
php修改word的实例方法
2021/11/17 PHP
Mysql外键约束的创建与删除的使用
2022/03/03 MySQL