使用vue-router的addRoutes方法做登录权限控制,当用户推出登录回到login页后,切换不同权限的账号,如果不reload页面,会导致router权限问题,故在vue-router代码中加入自定义的removeRoutes方法,代码如下(不保证无bug哦!)

1、
/**
 * @name removeRouteMap
 * @param {*} routes
 * @param {*} pathList
 * @param {*} pathMap
 * @param {*} nameMap
 * @description 删除
 * @author cjs1992
 * @date 2018-11-28 16:35
 */
function removeRouteMap (routes, pathList, pathMap, nameMap, ifDeep) {
  if (!ifDeep) {
    for (var i = pathList.length - 1; i >= 0;i--) {
      if (routes.path === pathList[i].path) {
        pathList.splice(i, 1);
        delete pathMap[routes.path]
        break;
      }
    }
    return;
  }
  if (routes.children && reoute.children.length !== 0) {
    for (var i = 0;i < routes.children.length;i++) {
      removeRouteMap(routes.children[i], pathList, pathMap, nameMap, ifDeep);
    }
    removeRouteMap(routes, pathList, pathMap, nameMap, false)
  } else {

    for (var i = pathList.length - 1; i >= 0;i--) {
      // console.log(pathList.length, 'pathList.length');console.log(routes, pathList)
      if (routes.path === pathList[i]) {
        pathList.splice(i, 1);
        delete pathMap[routes.path]
        break;
      }
    }
  }
}

2、
/**
   * @name removeRoutes
   * @description 定义
   * @author cjs1992
   * @date 2018-11-28 16:34
   */
  function removeRoutes (routes) {
    // console.log(removeRouteMap, routes, pathList, pathMap, nameMap);
    for (var i = 0;i < routes.length;i++) {
      removeRouteMap(routes[i], pathList, pathMap, nameMap, true)
    }
  }

3、
/**
 * @name removeRoutes
 * @description 定义清除路由的方法
 * @author cjs1992
 * @date 2018-11-28 16:30
 */
VueRouter.prototype.removeRoutes = function removeRoutes (routes) {
  this.matcher.removeRoutes(routes);
};

自定义扩展实现相对于addRoutes的removeRoutes方法——vue-router的更多相关文章

  1. WCF自定义扩展,以实现aop!

    引用地址:https://msdn.microsoft.com/zh-cn/magazine/cc163302.aspx  使用自定义行为扩展 WCF Aaron Skonnard 代码下载位置: S ...

  2. 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)

    参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...

  3. JAVA中自定义扩展Swagger的能力,自动生成参数取值含义说明,提升开发效率

    大家好,又见面了. 在JAVA做前后端分离的项目开发的时候,服务端需要提供接口文档供周边人员做接口的对接指导.越来越多的项目都在尝试使用一些基于代码自动生成接口文档的工具来替代由开发人员手动编写接口文 ...

  4. SharePoint 2013 自定义扩展菜单

    在对SharePoint进行开发或者功能扩展的时候,经常需要对一些默认的菜单进行扩展,以使我们开发的东西更适合SharePoint本身的样式.SharePoint的各种功能菜单,像网站设置.Ribbo ...

  5. SharePoint 2013 自定义扩展菜单(二)

    接博文<SharePoint 2013 自定义扩展菜单>,多加了几个例子,方便大家理解. 例七 列表设置菜单扩展(listedit.aspx) 扩展效果 XML描述 <CustomA ...

  6. Jquery自定义扩展方法(二)--HTML日历控件

    一.概述 研究了上节的Jquery自定义扩展方法,自己一直想做用jquery写一个小的插件,工作中也用到了用JQuery的日历插件,自己琢磨着去造个轮子--HTML5手机网页日历控件,废话不多说,先看 ...

  7. Silverlight实例教程 - 自定义扩展Validation类,验证框架的总结和建议(转载)

    Silverlight 4 Validation验证实例系列 Silverlight实例教程 - Validation数据验证开篇 Silverlight实例教程 - Validation数据验证基础 ...

  8. jQuery 自定义扩展,与$冲突处理

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件

    需求   SparkContext自定义扩展textFiles,支持从多个目录中输入文本文件   扩展   class SparkContext(pyspark.SparkContext): def ...

随机推荐

  1. tensorflow/threading 用到的一些函数

    ---恢复内容开始--- import tensorflow as tf 1    tf.squeeze([1,2,3,4])  删除所有为1的维度   eg shape从(1,2,3,1)到(2,3 ...

  2. xml 转换成对象(采用反射机制对对对象属性赋值)

    /// <summary> /// 采用反射机制对对对象属性赋值 /// </summary> /// <param name="node">& ...

  3. Spring Boot+Spring Security:获取用户信息和session并发控制

    说明 (1)JDK版本:1.8(2)Spring Boot 2.0.6(3)Spring Security 5.0.9(4)Spring Data JPA 2.0.11.RELEASE(5)hiber ...

  4. CSS:手机页面,常用字号和布局(工作中用)

    {literal}   {/literal} 公用css .cOrange,.cOrange:visited,.cOrange > a {color: #ff7200;} .border1-to ...

  5. 全面超越Appium,使用Airtest超快速开发App爬虫

    想开发网页爬虫,发现被反爬了?想对 App 抓包,发现数据被加密了?不要担心,使用 Airtest 开发 App 爬虫,只要人眼能看到,你就能抓到,最快只需要2分钟,兼容 Unity3D.Cocos2 ...

  6. 201772020113李清华《面向对象程序设计(java)》第九周学习总结

    1.实验目的与要求 (1) 掌握java异常处理技术: (2) 了解断言的用法: (3) 了解日志的用途: (4) 掌握程序基础调试技巧: 2.实验内容和步骤 实验1:用命令行与IDE两种环境下编辑调 ...

  7. cdh启动datanode报错

    问题: 为cdh新增节点时,在分配datanode后,启动报错 Can't open /iot/opt/cloudera-manager/cm-5.11.2/run/cloudera-scm-agen ...

  8. 在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Framework 4

    在引用阿里云库或其他库的时候,经常发生框架不兼容(原因是系统采用:Microsoft .NET Framework 4 Client Profile ),请改为Microsoft .NET Frame ...

  9. Idea安装svn插件

    1. 首先要注意:TortoiseSVN在安装的时候没有command line,在安装TortoiseSVN时,要支持Idea需要点击叉的下拉单,选择will be installed local ...

  10. Traceback (most recent call last): File "c:\program files (x86)\microsoft visual studio\2019\community\common7\ide\extensions\microsoft\python\core\Packages\ptvsd\_vendored\pydevd\_pydevd_bundle\pyd

    某次编码,debug的时候突然突然突然给我报这个错: Traceback (most recent call last):   File "c:\program files (x86)\mi ...