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 相关文章推荐
jQuery使用技巧简单汇总
Apr 18 Javascript
js和as的稳定传值问题解决
Jul 14 Javascript
js读取注册表的键值示例
Sep 25 Javascript
JavaScript SetInterval与setTimeout使用方法详解
Nov 15 Javascript
jquery实现简单合拢与展开网页面板的方法
Sep 01 Javascript
SublimeText自带格式化代码功能之reindent
Dec 27 Javascript
IE下JS保存图片的简单实例
Jul 15 Javascript
jQuery 出现Cannot read property ‘msie’ of undefined错误的解决方法
Nov 23 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
Sep 27 Javascript
JS实现普通轮播图特效
Jan 01 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
构建简单的Webmail系统
2006/10/09 PHP
投票管理程序
2006/10/09 PHP
php给图片加文字水印
2015/07/31 PHP
PHP  Yii清理缓存的实现方法
2016/11/10 PHP
PHP getDocNamespaces()函数讲解
2019/02/03 PHP
JQUERY复选框CHECKBOX全选,取消全选
2008/08/30 Javascript
新鲜出炉的js tips提示效果
2011/04/03 Javascript
Node.js文件操作详解
2014/08/16 Javascript
Wireshark基本介绍和学习TCP三次握手
2016/08/15 Javascript
Javascript计算二维数组重复值示例代码
2016/12/18 Javascript
详解vue表单验证组件 v-verify-plugin
2017/04/19 Javascript
vue-cli中打包图片路径错误的解决方法
2017/10/26 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
2018/03/18 Javascript
vue todo-list组件发布到npm上的方法
2018/04/04 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
vue 使用插槽分发内容操作示例【单个插槽、具名插槽、作用域插槽】
2020/03/06 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
浅谈vue生命周期共有几个阶段?分别是什么?
2020/08/07 Javascript
[01:03:22]LGD vs OG 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
python Django框架实现自定义表单提交
2016/03/25 Python
Python实现两个list对应元素相减操作示例
2017/06/09 Python
运用TensorFlow进行简单实现线性回归、梯度下降示例
2018/03/05 Python
浅谈Pandas 排序之后索引的问题
2018/06/07 Python
Python学习笔记之视频人脸检测识别实例教程
2019/03/06 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
2019/06/17 Python
python django model联合主键的例子
2019/08/06 Python
Python接口开发实现步骤详解
2020/04/26 Python
利用python汇总统计多张Excel
2020/09/22 Python
html5触摸事件判断滑动方向的实现
2018/06/05 HTML / CSS
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
计算机学生求职信范文
2014/01/30 职场文书
党员先锋岗事迹材料
2014/05/08 职场文书
给老婆的道歉信
2015/01/20 职场文书
创业计划书之家教中心
2019/09/25 职场文书