使用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. java类的生命周期

    https://www.cnblogs.com/aspirant/p/7200523.html 验证的内容:文件格式,字节码,符号引用,元数据 准备:给静态变量分配内存设置初始值(0) 初始化才是真正 ...

  2. Comparator与Comparable,自定义排序和类比较器,TreeSet对象排序

    /** * 学生类 * @author Administrator * */ public class Student { private String sno ; private String sn ...

  3. JavaScript数组方法--reduce、reduceRIght、reverse

    今天写的reduce是比较复杂的一个数组方法,其实在这之前我也用过reduce,可是每次用起来总感觉不那么顺手,主要还是因为不熟,对reduce本身不熟.首先reduce这个单词翻译为中文,不那么直观 ...

  4. Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)

    Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程) 看到网上AS3.0新增加的查看手机文件的新功能,全部都是转载的,没有几个人心细的把如何打开 ...

  5. lambda 和 iterable

    Lambda 表达式 你可以使用 Lambda 表达式创建匿名函数,即没有名称的函数.lambda 表达式非常适合快速创建在代码中以后不会用到的函数.尤其对高阶函数或将其他函数作为参数的函数来说,非常 ...

  6. Laragon+PHP7中开启xdebug

    状态 :laragon+php7.2,按管方做法要求用的是xdebug2.7.结果2.7版本放进去一打断点就挂了,于是换成2.6的版本, php.ini中配置如下: [Xdebug] zend_ext ...

  7. [UnityShader基础]08.UI-Default.shader

    参考链接: https://zhuanlan.zhihu.com/p/32561155 https://blog.csdn.net/WuShangLZ/article/details/80401441 ...

  8. pyspider 笔记

    fetch_type='js' 运行 js代码

  9. video.js使用

    //引入video.js html <video id="my-player" className="video-js my-player-wrap vjs-big ...

  10. 深入理解Java虚拟机读书笔记8----Java内存模型与线程

    八 Java内存模型与线程   1 Java内存模型     ---主要目标:定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节.     ---此处的变量和J ...