Skip to content
Snippets Groups Projects
Commit 29d28c32 authored by Pan's avatar Pan
Browse files

fix bug in vuex of strict model

parent 62cb24c1
No related branches found
No related tags found
No related merge requests found
import Cookies from 'js-cookie';
const app = {
state: {
sidebar: {
......@@ -19,11 +20,17 @@ const app = {
state.sidebar.opened = !state.sidebar.opened;
},
ADD_VISITED_VIEWS: (state, view) => {
if (state.visitedViews.includes(view)) return
state.visitedViews.push(view)
if (state.visitedViews.some(v => v.path === view.path)) return
state.visitedViews.push({ name: view.name, path: view.path })
},
DEL_VISITED_VIEWS: (state, view) => {
const index = state.visitedViews.indexOf(view)
let index
for (const [i, v] of state.visitedViews.entries()) {
if (v.path === view.path) {
index = i
break
}
}
state.visitedViews.splice(index, 1)
}
},
......
import { asyncRouterMap, constantRouterMap } from 'src/router';
import { deepClone } from 'utils'
/**
* 通过meta.role判断是否与当前用户权限匹配
......@@ -38,8 +39,8 @@ const permission = {
},
mutations: {
SET_ROUTERS: (state, routers) => {
state.addRouters = routers;
state.routers = constantRouterMap.concat(routers);
state.addRouters = deepClone(routers)
state.routers = deepClone(constantRouterMap.concat(routers))
}
},
actions: {
......
......@@ -250,3 +250,21 @@
};
}
export function deepClone(source) {
if (!source && typeof source !== 'object') {
throw new Error('error arguments', 'shallowClone');
}
const targetObj = source.constructor === Array ? [] : {};
for (const keys in source) {
if (source.hasOwnProperty(keys)) {
if (source[keys] && typeof source[keys] === 'object') {
targetObj[keys] = source[keys].constructor === Array ? [] : {};
targetObj[keys] = deepClone(source[keys]);
} else {
targetObj[keys] = source[keys];
}
}
}
return targetObj;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment