Skip to content

Commit d6f24f7

Browse files
MrAcclesendya
authored andcommitted
multiple loads route
1 parent af7285d commit d6f24f7

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

src/store/modules/permission.js

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,35 @@ function hasRole(roles, route) {
3737
}
3838
}
3939

40+
/**
41+
* 简易深拷贝
42+
* @param target
43+
* @returns {Object}
44+
*/
45+
function deepClone (target) {
46+
let result
47+
if (typeof target === 'object') {
48+
if (Array.isArray(target)) {
49+
result = []
50+
for (const i in target) {
51+
result.push(deepClone(target[i]))
52+
}
53+
} else if (target === null) {
54+
result = null
55+
} else if (target.constructor === RegExp) {
56+
result = target
57+
} else {
58+
result = {}
59+
for (const i in target) {
60+
result[i] = deepClone(target[i])
61+
}
62+
}
63+
} else {
64+
result = target
65+
}
66+
return result
67+
}
68+
4069
function filterAsyncRouter (routerMap, roles) {
4170
const accessedRouters = routerMap.filter(route => {
4271
if (hasPermission(roles.permissionList, route)) {
@@ -65,7 +94,8 @@ const permission = {
6594
GenerateRoutes ({ commit }, data) {
6695
return new Promise(resolve => {
6796
const { roles } = data
68-
const accessedRouters = filterAsyncRouter(asyncRouterMap, roles)
97+
const routerMap = deepClone(asyncRouterMap)
98+
const accessedRouters = filterAsyncRouter(routerMap, roles)
6999
commit('SET_ROUTERS', accessedRouters)
70100
resolve()
71101
})

0 commit comments

Comments
 (0)