提交 29d28c32 编写于 作者: P Pan

fix bug in vuex of strict model

上级 62cb24c1
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;
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册