使用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. Odoo二次开发

    Odoo 点击进入

  2. express+websocket+exec+spawn=webshell

    var child_process = require('child_process'); var ws = require("nodejs-websocket"); consol ...

  3. Android 开发 8.0版本启动Service的方法

    前言  google在更新Android8.0后对Service的权限越发收紧.导致目前想要启动服务必需实现服务的前台化(否则在服务启动5秒后,系统将自动报错).下面我们就来看看如何在8.0上启动服务 ...

  4. python2 with open(path,"",) as f:

    python2 with open 没有 encoding 这个参数 会报错, 可以 import io with io.open(path,"") as f: 这样就ok 或者是 ...

  5. Maven 下载、安装、配置学习

    一.Maven 下载与安装 电脑已安装:JDK.Eclipse 1.下载Maven:http://maven.apache.org/download.cgi 2.解压并安装:解压路径名不能有中文! 3 ...

  6. 爬虫之scrapy

    一.项目简单流程 1.创建项目 scrapy startproject 项目名 2.创建Spider cd 项目名 scrapy genspider 爬虫名 域名 class YokaSpider(s ...

  7. php laravel+nginx 除了根目录都报404 解决

    在nginx的配置文件加 location / { try_files $uri $uri/ /index.php?$query_string; } 即可!!!!!!!

  8. turtle画戒指

    import turtleturtle.bgcolor('black')turtle.speed(5)turtle.pensize(3)for i in range(1,5): turtle.righ ...

  9. pycharm中运行成功的python代码在jenkin中运行问题总结

    我们在用selenium+python完成了项目的UI自动化后,一般用jekins持续集成工具来定期运行,python程序在pycharm中编辑运行成功,但在jenkins中运行失败的两个问题,整理如 ...

  10. Spring Security 理解小记

    JWT 框架图如下, 来自博客https://blog.csdn.net/shehun1/article/details/45394405 个人觉得还不错.. 在开发中Spring boot 启用 加 ...