使用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. vue学习笔记(一)--Tab切换

    最近在学Vue,写的第一个demo是Tab,刚开始还直接把js代码贴过来改,没觉得有什么不同.然后请教别人说,用Vue最好不要操作dom啦,又把代码做了修改-_-. html代码如下: <div ...

  2. Linux进阶指令(重点)

    三.Linux进阶指令(重点) 1.df指令    作用:查看磁盘的空间 #df -h 选项:-h    表示以可读性较高的形式展示大小 2.free指令     作用:查看内存使用情况 #free ...

  3. jq中的$操作符与其他js框架冲突

    解决办法: jq中存在方法:noConflict() 可返回对 jQuery 的引用. 使用示例: var jq = $.noConflict(); jq(document).ready(functi ...

  4. spring 2.5.6 错误:Context namespace element 'component-scan' and its parser class [org.springframework.context.annotation.ComponentScanBeanDefinitionParser] are only available on JDK 1.5 and higher

    在运行一个第三方公司交付的项目的时候, 出现: Caused by: java.lang.IllegalStateException: Context namespace element 'annot ...

  5. frist Django app — 一、 创建工程

    缘起 既然python都学了,学习python的时候感觉是相见恨晚,一种新的编程语言带给我一种新的思考问题的方式,为了巩固学过的东西并进一步学习python,就想学学Django,看看会不会带给我关于 ...

  6. Xcode中编译iOS程序,运行出错:Thread 1: signal SIGABRT

    添加一个全局Exception Breakpoint 就检测出来了  导航栏里面 Debug 菜单里面

  7. IAR软件的使用

    STM32标准外设库下载 官网下载链接(需要ST账号登陆): http://www.st.com/content/st_com/en/products/embedded-software/mcus-e ...

  8. JPA报错问题修改小结

    项目中在使用线程跑定时任务时,遇到报错,"Could not open JPA EntityManager for transaction Caused by: org.hibernate. ...

  9. ESLint具体规则设置

    "no-alert": 0,//禁止使用alert confirm prompt "no-array-constructor": 2,//禁止使用数组构造器 & ...

  10. 修改jupyter notebook主题、字体和启动路径

    目录 1.安装主题 2.切换 3.字体 4.启动路径 1.安装主题 window在cmd中输入 pip install --upgrade jupyterthemes 完成后输入查看 jt -l 就提 ...