通过后端返回数据然后找到对应组件 addRouter 实现用户路由权限,在动态加载组件时,一直报错,找不到组件;
相关代码
actions: {
GenerateRoutes({ commit, rootState }) {
return new Promise(resolve => {
let accessedRouters = [];
let menuList = rootState.user.menu;
menuList.forEach(function(item,index,arry){
item.component = Layout;
if(item.children&&item.children.length>=1){
item.children.forEach(function(chItem, chIndex,chArry){
let path = chArry[0].path;
if(typeof chItem.component=='string'){
chItem.component = resolve => require([`../../views/` + chItem.component + `.vue`], resolve);
};
item["redirect"] = item.path+"/"+path;
item["meta"] = { "title": item.title,"icon": item.icon};
chItem["meta"] = { "title": chItem.title}
});
};
})
accessedRouters = menuList;
accessedRouters.push({
path: '*',
redirect: '/404',
hidden: true
});
commit('SET_ROUTERS', accessedRouters)
resolve()
})
}
}
后来把组件名字用变量接收下再拼接就可以了,具体原因还在研究,有碰到这个问题的多注意一下,够坑的;
let comName = chItem.component;
if(typeof chItem.component=='string'){
chItem.component = resolve => require([`../../views` + comName + `.vue`], resolve);
};
let comName = chItem.component;
if(typeof chItem.component=='string'){
};