Javascript 如何定义新路由器?
对于这个问题,我指的是来自 这个模板是最适合我的模板。然而,我想做一些改变。确切地说,我想添加一个新页面,但不想在侧边栏中显示此页面。为此,我需要定义新的路由器。我的问题是:我不太明白如何添加新的路由器 这就是我所做的: 首先,我在Javascript 如何定义新路由器?,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,对于这个问题,我指的是来自 这个模板是最适合我的模板。然而,我想做一些改变。确切地说,我想添加一个新页面,但不想在侧边栏中显示此页面。为此,我需要定义新的路由器。我的问题是:我不太明白如何添加新的路由器 这就是我所做的: 首先,我在组件/contact/contact.vue中创建了一个.vue文件。其代码: <template> <div class="contact"> <div class="row"> <div class
组件/contact/contact.vue
中创建了一个.vue
文件。其代码:
<template>
<div class="contact">
<div class="row">
<div class="col-md-12">
<p>contact</p>
</div>
</div>
</div>
</template>
<script>
export default { name: 'contact' }
</script>
<style lang="scss"></style>
import lazyLoading from './lazyLoading'
export default {
name: 'Contact',
path: '/contact',
component: lazyLoading('contact/Contact'),
meta: {
default: false,
title: 'menu.contact',
iconClass: 'vuestic-icon vuestic-icon-extras'
}
}
第三在store/modules/menu/index.js
文件中,我通过添加页面
更改了状态
定义:
import contact from './contact'
const state = {
pages: [
contact
],
items: [
dashboard,
statistics,
forms,
tables,
ui,
extra,
auth
]
}
在路由器/index.js
文件中,我做了以下更改:
export default new Router({
routes: [
...generateRoutesFromMenu(menuModule.state.items),
{path: '*', redirect: { name: getDefaultRoute(menuModule.state.items).name }},
...generateRoutesFromMenu(menuModule.state.pages),
{path: '*', redirect: { name: getDefaultRoute(menuModule.state.pages).name }}
]
})
通过编译上面的更改,我得到了控制台错误:uncaughttypeerror:无法读取未定义的属性“name”
根据我的知识(和我的猜测),问题应该在第四步
谁能告诉我解决这个问题的方法吗?非常感谢 查看getDefaultRoute()
的源代码
函数getDefaultRoute(菜单=[]){
让默认路径
menu.forEach((项目)=>{
if(item.meta.default){
defaultRoute=项目
}else if(项。子项){
让defaultChild=item.children.find((i)=>i.meta.default)
defaultRoute=defaultChild | | defaultRoute
}
})
返回默认路线
}
我想说你不需要电话线
{path:'*',重定向:{name:getDefaultRoute(menuModule.state.pages).name}
因为对于联系人,您已经设置了默认值:false
,并且没有子项,这意味着函数返回null(因此您收到了错误消息)
该框架似乎假定一个菜单项列表,并将其中一个设置为默认值。但我认为你的方法应该奏效
唯一的潜在问题是,看起来您正在更改框架代码,这意味着在升级到框架的下一个版本时需要做更多的工作
关于升级的说明 我刚刚运行了基本的安装,看看这个项目,我不得不修改我关于潜在升级问题的评论 本质上,这是一个模板,而不是一个框架。不同之处在于安装程序在项目的src文件夹中创建启动程序代码,您可以自由修改并保存到github存储库中 当您将来在项目上运行
npm install
时,node_modules下没有任何包会覆盖您的路由器更改
如果epicmaxco创建了您希望使用的模板的新版本,您只需创建一个新项目,并将您以前在src中所做的更改复制到新项目中(可能会运行新旧src文件夹的差异)。您说您不希望路线出现在菜单中,但您正在采取所有步骤使其出现。你看过路由器了吗?这就像使用字符串键指向component@sklingler93谢谢你的回复。对于一般添加路由器,我可能知道如何做。我实际上不知道如何添加路由器到这个模板。此外,在第三步中,我制作了包含我不想显示的页面的页面。非常感谢!实际上这个模板有很多我第一眼就喜欢的特性。一开始我还没有意识到诸如“单一菜单项列表”或“升级”之类的问题。现在,这对我来说真的是一个非常烦人但也是一个挑战性的任务。我是否应该问你是否有任何关于模板的建议,以避免“单一菜单项列表”或“升级”问题?我必须等待获得15个声誉才能给你repu分数。:-)事实上,这是我第一次看到这个模板,但我也喜欢它。我会看看没有升级问题的最佳定制方法,如果我发现了什么,我会发布。那太好了。提前谢谢你!