打開項(xiàng)目
引入
在Element官網(wǎng)復(fù)制粘貼到項(xiàng)目中
<template>
<div id="app">
<el-container style="height: 500px; border: 1px solid #eee">
<el-aside width="200px" style="background-color: rgb(238, 241, 246)">
<el-menu :default-openeds="['1', '3']">
<el-submenu index="1">
<template slot="title"><i class="el-icon-message"></i>導(dǎo)航一</template>
<el-menu-item-group>
<template slot="title">分組一</template>
<el-menu-item index="1-1">選項(xiàng)1</el-menu-item>
<el-menu-item index="1-2">選項(xiàng)2</el-menu-item>
</el-menu-item-group>
<el-menu-item-group title="分組2">
<el-menu-item index="1-3">選項(xiàng)3</el-menu-item>
</el-menu-item-group>
<el-submenu index="1-4">
<template slot="title">選項(xiàng)4</template>
<el-menu-item index="1-4-1">選項(xiàng)4-1</el-menu-item>
</el-submenu>
</el-submenu>
<el-submenu index="2">
<template slot="title"><i class="el-icon-menu"></i>導(dǎo)航二</template>
<el-menu-item-group>
<template slot="title">分組一</template>
<el-menu-item index="2-1">選項(xiàng)1</el-menu-item>
<el-menu-item index="2-2">選項(xiàng)2</el-menu-item>
</el-menu-item-group>
<el-menu-item-group title="分組2">
<el-menu-item index="2-3">選項(xiàng)3</el-menu-item>
</el-menu-item-group>
<el-submenu index="2-4">
<template slot="title">選項(xiàng)4</template>
<el-menu-item index="2-4-1">選項(xiàng)4-1</el-menu-item>
</el-submenu>
</el-submenu>
<el-submenu index="3">
<template slot="title"><i class="el-icon-setting"></i>導(dǎo)航三</template>
<el-menu-item-group>
<template slot="title">分組一</template>
<el-menu-item index="3-1">選項(xiàng)1</el-menu-item>
<el-menu-item index="3-2">選項(xiàng)2</el-menu-item>
</el-menu-item-group>
<el-menu-item-group title="分組2">
<el-menu-item index="3-3">選項(xiàng)3</el-menu-item>
</el-menu-item-group>
<el-submenu index="3-4">
<template slot="title">選項(xiàng)4</template>
<el-menu-item index="3-4-1">選項(xiàng)4-1</el-menu-item>
</el-submenu>
</el-submenu>
</el-menu>
</el-aside>
<el-container>
<el-header style="text-align: right; font-size: 12px">
<el-dropdown>
<i class="el-icon-setting" style="margin-right: 15px"></i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>查看</el-dropdown-item>
<el-dropdown-item>新增</el-dropdown-item>
<el-dropdown-item>刪除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span>王小虎</span>
</el-header>
<el-main>
<el-table :data="tableData">
<el-table-column prop="date" label="日期" width="140">
</el-table-column>
<el-table-column prop="name" label="姓名" width="120">
</el-table-column>
<el-table-column prop="address" label="地址">
</el-table-column>
</el-table>
</el-main>
</el-container>
</el-container>
</div>
</template>
<style>
.el-header {
background-color: #B3C0D1;
color: #333;
line-height: 60px;
}
.el-aside {
color: #333;
}
</style>
<script>
export default {
data() {
const item = {
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
};
return {
tableData: Array(20).fill(item)
}
}
};
</script>
Vue 集成 Element UI
Element UI 后臺管理系統(tǒng)主要的標(biāo)簽:
el-container:構(gòu)建整個??框架。
el-aside:構(gòu)建左側(cè)菜單。
el-menu:左側(cè)菜單內(nèi)容改化,常?屬性:
1:default-openeds:默認(rèn)展開的菜單慎框,通過菜單的 index 值來關(guān)聯(lián)余黎。
<el-menu :default-openeds="['1', '3']">
2:default-active:默認(rèn)選中的菜單,通過菜單的 index 值來關(guān)聯(lián)。
<el-menu :default-openeds="['1', '3']" :default-active="'1-2'">
el-submenu:可展開的菜單躏升,常?屬性:
index:菜單的下標(biāo),?本類型狼忱,不能是數(shù)值類型膨疏。
template:對應(yīng) el-submenu 的菜單名。
i:設(shè)置菜單圖標(biāo)钻弄,通過 class 屬性實(shí)則佃却。
el-icon-messae
el-icon-menu
el-icon-setting
el-menu-item:菜單的?節(jié)點(diǎn),不可再展開窘俺,常?屬性:
index:菜單的下標(biāo)饲帅,?本類型,不能是數(shù)值類型瘤泪。
<el-submenu index="1">
<template slot="title"><i class="el-icon-message"></i>導(dǎo)航一</template>
<el-menu-item-group>
<template slot="title">分組一</template>
<el-menu-item index="1-1">選項(xiàng)1</el-menu-item>
<el-menu-item index="1-2">選項(xiàng)2</el-menu-item>
</el-menu-item-group>
<el-menu-item-group title="分組2">
<el-menu-item index="1-3">選項(xiàng)3</el-menu-item>
</el-menu-item-group>
<el-submenu index="1-4">
<template slot="title">選項(xiàng)4</template>
<el-menu-item index="1-4-1">選項(xiàng)4-1</el-menu-item>
</el-submenu>
</el-submenu>
如果菜單還需要下級菜單
<el-submenu index="1">
<template slot="title"><i class="el-icon-message"></i>導(dǎo)航一</template>
<el-menu-item index="1-1">選項(xiàng)1</el-menu-item>
<el-menu-item index="1-2">選項(xiàng)2</el-menu-item>
<el-menu-item index="1-3">選項(xiàng)3</el-menu-item>
<el-submenu index="1-4">
<template slot="title"><i class="el-icon-message"></i>選項(xiàng)4</template>
<el-menu-item index="1-4-1">選項(xiàng)4-1</el-menu-item>
<el-menu-item index="1-4-2">選項(xiàng)4-2</el-menu-item>
</el-submenu>
</el-submenu>
Vue router 來動態(tài)構(gòu)建左側(cè)菜單
導(dǎo)航1
1.??1
2.??2
導(dǎo)航2
1.??3
2.??4
在View首先創(chuàng)建頁面
然后在router文件夾下的index.js配置路由
import Vue from 'vue'
import VueRouter from 'vue-router'
import PageOne from "../views/PageOne"
import PageTwo from "../views/PageTwo"
import PageThree from "../views/PageThree"
import PageFour from "../views/PageFour"
import App from "../App";
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: '導(dǎo)航1',
component: App,
},
{
path:'/pageOne',
name:'頁面1',
component:PageOne
},
{
path:'/pageTwo',
name:'頁面2',
component:PageTwo
},
{
path:'/pageThree',
name:'頁面3',
component:PageThree
},
{
path:'/pageFour',
name:'頁面4',
component:PageFour
}
]
測試http://localhost:8080/pageOne
image.png
不是想要的結(jié)果怎么辦灶泵?
image.png
原因因?yàn)橹虚g黃色部分的窗口沒有開所以需要開窗口。
怎么開窗口均芽?
在App.vue主頁面中加<router-view></router-view>
代碼如下
如何講頁面放到我們想要放的位置丘逸?
代碼如下
菜單動態(tài)讀取Router中的數(shù)據(jù)
router下的index.js
const routes = [
{
path: '/',
name: '導(dǎo)航1',
component: App,
child:[
{
path:'/pageOne',
name:'頁面1',
component:PageOne
},
{
path:'/pageTwo',
name:'頁面2',
component:PageTwo
}
]
},
{
path: '/navigation',
name: '導(dǎo)航2',
component: App,
child:[
{
path:'/pageThree',
name:'頁面3',
component:PageThree
},
{
path:'/pageFour',
name:'頁面4',
component:PageFour
}
]
}
app.vue怎么動態(tài)讀取
獲取index.js的routes
$router.options.routes
<div id="app">
<el-container style="height: 500px; border: 1px solid #eee">
<el-aside width="200px" style="background-color: rgb(238, 241, 246)">
<!-- <el-menu :default-openeds="['1', '3']" :default-active="'1-2'">-->
<!-- <el-submenu index="1">-->
<!-- <template slot="title"><i class="el-icon-message"></i>導(dǎo)航一</template>-->
<!-- <el-menu-item index="1-1">選項(xiàng)1</el-menu-item>-->
<!-- <el-menu-item index="1-2">選項(xiàng)2</el-menu-item>-->
<!-- <el-menu-item index="1-3">選項(xiàng)3</el-menu-item>-->
<!-- <el-submenu index="1-4">-->
<!-- <template slot="title"><i class="el-icon-message"></i>選項(xiàng)4</template>-->
<!-- <el-menu-item index="1-4-1">選項(xiàng)4-1</el-menu-item>-->
<!-- <el-menu-item index="1-4-2">選項(xiàng)4-2</el-menu-item>-->
<!-- </el-submenu>-->
<!-- </el-submenu>-->
<!-- </el-menu>-->
<el-menu>
<el-submenu v-for="(item,index) in $router.options.routes" :key="item.label" :index="index+''">
<template slot="title"><i class="el-icon-message"></i>{{item.name}}</template>
<el-menu-item v-for="item2 in item.children" :key="item2.label">{{item2.name}}</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
index代表下標(biāo) 避免展開收回是沖突 index屬性是字符串
如何把右側(cè)頁面只顯示頁面內(nèi)容不嵌套導(dǎo)航
新建index.vue 將導(dǎo)航數(shù)據(jù)存放如下
index.vue
<template>
<el-container style="height: 500px; border: 1px solid #eee">
<el-aside width="200px" style="background-color: rgb(238, 241, 246)">
<!-- <el-menu :default-openeds="['1', '3']" :default-active="'1-2'">-->
<!-- <el-submenu index="1">-->
<!-- <template slot="title"><i class="el-icon-message"></i>導(dǎo)航一</template>-->
<!-- <el-menu-item index="1-1">選項(xiàng)1</el-menu-item>-->
<!-- <el-menu-item index="1-2">選項(xiàng)2</el-menu-item>-->
<!-- <el-menu-item index="1-3">選項(xiàng)3</el-menu-item>-->
<!-- <el-submenu index="1-4">-->
<!-- <template slot="title"><i class="el-icon-message"></i>選項(xiàng)4</template>-->
<!-- <el-menu-item index="1-4-1">選項(xiàng)4-1</el-menu-item>-->
<!-- <el-menu-item index="1-4-2">選項(xiàng)4-2</el-menu-item>-->
<!-- </el-submenu>-->
<!-- </el-submenu>-->
<!-- </el-menu>-->
<el-menu>
<el-submenu v-for="(item,index) in $router.options.routes" :key="item.label" :index="index+''">
<template slot="title"><i class="el-icon-message"></i>{{item.name}}</template>
<el-menu-item v-for="(item2,index2) in item.children" :key="item2.label" :index="index+'-'+index2">{{item2.name}}</el-menu-item>
</el-submenu>
</el-menu>
</el-aside>
<el-main>
<router-view></router-view>
</el-main>
</el-container>
</template>
<script>
export default {
name: "index"
}
</script>
<style scoped>
</style>
App.vue
<template>
<div id="app">
<el-container>
<el-header style="text-align: right; font-size: 12px">
<el-dropdown>
<i class="el-icon-setting" style="margin-right: 15px"></i>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item>查看</el-dropdown-item>
<el-dropdown-item>新增</el-dropdown-item>
<el-dropdown-item>刪除</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<span>王小虎</span>
</el-header>
<el-main>
<router-view></router-view>
</el-main>
</el-container>
<!-- <router-view></router-view>-->
</div>
</template>
<style>
.el-header {
background-color: #B3C0D1;
color: #333;
line-height: 60px;
}
.el-aside {
color: #333;
}
</style>
<script>
export default {
data() {
const item = {
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀區(qū)金沙江路 1518 弄'
};
return {
tableData: Array(20).fill(item)
}
}
};
</script>
index.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import PageOne from "../views/PageOne"
import PageTwo from "../views/PageTwo"
import PageThree from "../views/PageThree"
import PageFour from "../views/PageFour"
// import App from "../App";
import index from "../views/index"
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: '導(dǎo)航1',
component: index,
children:[
{
path:'/pageOne',
name:'頁面1',
component:PageOne
},
{
path:'/pageTwo',
name:'頁面2',
component:PageTwo
}
]
},
{
path: '/navigation',
name: '導(dǎo)航2',
component: index,
children:[
{
path:'/pageThree',
name:'頁面3',
component:PageThree
},
{
path:'/pageFour',
name:'頁面4',
component:PageFour
}
]
}
]
const router = new VueRouter({
mode: 'history',
base: process.env.BASE_URL,
routes
})
export default router
menu 與 router 的綁定
1、 標(biāo)簽添加 router 屬性掀宋。
2深纲、在??中添加 標(biāo)簽,它是?個容器劲妙,動態(tài)渲染你選擇的 router湃鹊。
3、 標(biāo)簽的 index 值就是要跳轉(zhuǎn)的 router镣奋。
初始化初始頁面
redirect:"/pageOne",
默認(rèn)跳轉(zhuǎn)
path: '/',
name: '導(dǎo)航1',
component: index,
redirect:"/pageOne",
children:[
{
path:'/pageOne',
name:'頁面1',
component:PageOne
},
初始化沒有被選中導(dǎo)航怎么辦币呵?
:class動態(tài)加樣式
<el-menu-item v-for="(item2) in item.children" :key="item2.label" :index="item2.path"
:class="$route.path==item2.path?'is-active':''">{{item2.name}}</el-menu-item>