fix bug in vuex of strict model
This commit is contained in:
parent
62cb24c1a6
commit
29d28c3231
3 changed files with 31 additions and 5 deletions
|
@ -1,5 +1,6 @@
|
|||
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)
|
||||
}
|
||||
},
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue