当我们通过点击相应目录导航加载相应区域的时候,需要创建子组件来完成,同时父组件显示部分需要用<router-view></router-view>占位符来显示相应子组件的内容加载
此父组件的内容部分修改为<router-view></router-view>
修改后:
运行后发现页面显示vue加载默认界面
那是因为当我们引用router-view的时候,路由配置根路径中默认显示HomeView.vue下的视图内容
在这里为了美观我们将他删掉,删除的过程需要删除他整个组件
删除之后此处引用和导入也需要删掉
此删除过程删不删除其实并不影响,在这里只是为了让大家在删除的过程中体会组件和视图之间的联系
删除之后:
下面完成点击分类管理打开分类管理页面内容的操作
首先要去设置路由
新增一个跳往分类管理页的路由配置
然后在view文件夹下创建一个分类管理页 CategoryView.vue
配置完成
接下来实现点击分类管理打开此页面内容的操作
首先我们需要在根组件app.vue下做设置
之前做跳转的时候使用的是<router-link :to="跳转地址"></router-link>,但是element框架有更加便捷的方式
这句话意思就是在el-menu下将:router设置为"true",就可以启用路由模式,启用后el-sub-menu标签中的index属性就相当于router-link中的to,充当于path路由跳转使用
此时设置分类管理的index
注意:此处index里面的内容是根据自己设置路由时在想跳转的页面下path定义的路径名称,需一致
设置成功效果:
app.vue文件修改后代码:
<template>
<el-container class="layout-container-demo">
<el-aside width="200px">
<el-scrollbar>
<div class="mb-2 logo">Vue3+core6 WebAPI</div>
<el-menu
:default-openeds="['1', '2']"
active-text-color="#ffd04b"
background-color="#303133"
text-color="#fff"
:router="true"
>
<el-sub-menu index="1">
<template #title>
<el-icon>
<message />
</el-icon>店铺管理
</template>
<el-menu-item-group>
<el-menu-item index="/">
<el-icon>
<HomeFilled />
</el-icon>首页
</el-menu-item>
<el-menu-item index="/category">
<el-icon>
<Operation />
</el-icon>分类管理
</el-menu-item>
<el-menu-item index="1-3">
<el-icon>
<ShoppingBag />
</el-icon>商品管理
</el-menu-item>
</el-menu-item-group>
</el-sub-menu>
<el-sub-menu index="2">
<template #title>
<el-icon>
<Setting />
</el-icon>系统设置
</template>
<el-menu-item-group>
<el-menu-item index="2-1">
<el-icon>
<Edit />
</el-icon>修改密码
</el-menu-item>
</el-menu-item-group>
</el-sub-menu>
</el-menu>
</el-scrollbar>
</el-aside>
<el-container>
<el-header style="text-align: right; font-size: 12px">
<div class="toolbar">
<el-dropdown>
<el-icon style="margin-right: 8px; margin-top: 1px">
<setting />
</el-icon>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item>View</el-dropdown-item>
<el-dropdown-item>Add</el-dropdown-item>
<el-dropdown-item>Delete</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
<span>Tom</span>
</div>
</el-header>
<el-main>
<router-view></router-view>
</el-main>
<el-footer>Footer</el-footer>
</el-container>
</el-container>
</template>
<script setup>
</script>
<style scoped>
.logo {
height: 50px;
color: white;
text-align: center;
line-height: 50px;
font-weight: bold;
}
/* 设置整体高度 */
.layout-container-demo {
height: 100vh;
}
.layout-container-demo .el-header {
position: relative;
/* background-color: var(--el-color-primary-light-7); */
background-color: white;
color: var(--el-text-color-primary);
box-shadow: var(--el-box-shadow-light);
}
.layout-container-demo .el-aside {
color: var(--el-text-color-primary);
/* background: var(--el-color-primary-light-8); */
background-color: #303133;
}
.layout-container-demo .el-menu {
border-right: none;
}
.layout-container-demo .el-main {
padding: 0;
box-shadow: var(--el-box-shadow-light);
margin: 10px 0;
}
.layout-container-demo .toolbar {
display: inline-flex;
align-items: center;
justify-content: center;
height: 100%;
right: 20px;
}
.el-footer {
box-shadow: var(--el-box-shadow-light);
}
</style>