vue-cli3 + elementui 搭建后臺(tái)管理界面(三)-側(cè)邊欄菜單

上一節(jié)搭好了主框架歌亲,但是標(biāo)簽頁(yè)和側(cè)邊欄只是分別展示了各自的菜單汰翠,如何將二者聯(lián)動(dòng)起來踪栋?
定義路由規(guī)則:當(dāng)有 children 屬性時(shí)倦青,從 children 里取出 path 填充到側(cè)邊欄

1 新增組件

新增 views/dashboard/index.vue

<template>
  <div>dashboard</div>
</template>

views/article/index.vue

<template>
  <div>Article</div>
</template>

2 修改路由

修改 src/router/index.js :

import Vue from 'vue'
import VueRouter from 'vue-router'
import Login from '../views/Login'
import Dashboard from '../views/dashboard'
import Article from '../views/article'
import Container from '../components/Container'

Vue.use(VueRouter)

const routes = [
  {
    path: '/',
    redirect: '/dashboard',
    name: 'Container',
    component: Container,
    children: [
      {
        path: 'dashboard', 
        name: '首頁(yè)', 
        component: Dashboard,
      },
      {
        path: 'article', 
        name: '文章', 
        component: Article, 
      },
    ]
  },
  {
    path: '/login',
    name: 'Login',
    component: Login
  }
]

const router = new VueRouter({
  mode: 'history',
  base: process.env.BASE_URL,
  routes
})

export default router

3 頁(yè)面主框架

修改 src/components/Container.vue

<template>
  <div class="app">
    <el-container>
      <el-aside class="app-side app-side-left" :class="isCollapse ? 'app-side-collapsed' : 'app-side-expanded'">
        <div class="app-side-logo">
          <img src="@/assets/logo.png"/>
        </div>
        <div class="app-side-content">
          <el-menu :default-active="defaultActive"
                   router
                   class="el-menu-vertical-demo"
                   @open="handleOpen"
                   :collapse="isCollapse">
            <template v-for="route in routes" >
              <template v-if="route.children && route.children.length">
                <el-menu-item v-for="item in route.children"
                              :key="route.path + '/' + item.path"
                              :index="item.path"
                  >
                  <i class="el-icon-menu"></i>
                  <span slot="title">{{ item.name }}</span>
                </el-menu-item>
              </template>
            </template>
          </el-menu>
        </div>
      </el-aside>

      <el-container>
        <el-header class="app-header">
          <div class="app-side-fold"
               @click.prevent="toggleSideBar">
            <i v-show="!isCollapse" class="el-icon-s-fold"></i>
            <i v-show="isCollapse" class="el-icon-s-unfold"></i>
          </div>
          <el-menu default-active="/"
                   router
                   class="el-menu-demo tab-page"
                   mode="horizontal"
                   @select="handleSelect"
                   active-text-color="#409EFF">
            <el-menu-item index="/">首頁(yè)</el-menu-item>
          </el-menu>

          <div class="app-header-userinfo">
            <el-dropdown trigger="hover"
                         :hide-on-click="false">
              <span class="el-dropdown-link">
                {{ username }}
                <i class="el-icon-caret-bottom el-icon--right"></i>
              </span>
              <el-dropdown-menu slot="dropdown">
                <el-dropdown-item>我的消息</el-dropdown-item>
                <el-dropdown-item>設(shè)置</el-dropdown-item>
                <el-dropdown-item divided
                                  @click.native="logout">退出登錄</el-dropdown-item>
              </el-dropdown-menu>
            </el-dropdown>
          </div>
        </el-header>

        <el-main class="app-body">
          <template>
            <router-view/>
          </template>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
export default {
  name: 'Container',
  data () {
    return {
      username: '',
      isCollapse: false,
    }
  },
  computed: {
    // 獲取route路由
    routes () {
      return this.$router.options.routes
    } 
  },
  methods: {
    toggleSideBar () {
      this.isCollapse = !this.isCollapse
    },
    logout () {
      this.$confirm('確認(rèn)退出?', '提示', {})
        .then(() => {
          sessionStorage.removeItem('user');
          this.$router.push('/login');
        })
        .catch(() => { });
    },
    handleOpen (key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose (key, keyPath) {
      console.log(key, keyPath);
    },
    handleSelect (key, keyPath) {
      console.log(key, keyPath);
    },
  },
  mounted () {
    let user = sessionStorage.getItem('user');
    if (user) {
      this.username = user;
    }
  },
}
</script>

<style lang="scss">
...

此時(shí)的頁(yè)面:


2.png
3.png

文章改編自大神博客:https://www.cnblogs.com/wbjxxzx/p/9943049.html,僅作為學(xué)習(xí)實(shí)踐芜茵。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叙量,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子九串,更是在濱河造成了極大的恐慌绞佩,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猪钮,死亡現(xiàn)場(chǎng)離奇詭異品山,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)烤低,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門肘交,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人扑馁,你說我怎么就攤上這事涯呻。” “怎么了腻要?”我有些...
    開封第一講書人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵复罐,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我闯第,道長(zhǎng)市栗,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任咳短,我火速辦了婚禮填帽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘咙好。我一直安慰自己篡腌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開白布勾效。 她就那樣靜靜地躺著嘹悼,像睡著了一般。 火紅的嫁衣襯著肌膚如雪层宫。 梳的紋絲不亂的頭發(fā)上杨伙,一...
    開封第一講書人閱讀 52,255評(píng)論 1 308
  • 那天,我揣著相機(jī)與錄音萌腿,去河邊找鬼限匣。 笑死,一個(gè)胖子當(dāng)著我的面吹牛毁菱,可吹牛的內(nèi)容都是我干的米死。 我是一名探鬼主播锌历,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼峦筒!你這毒婦竟也來了究西?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤物喷,失蹤者是張志新(化名)和其女友劉穎卤材,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體脯丝,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡商膊,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年伏伐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了宠进。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡藐翎,死狀恐怖材蹬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吝镣,我是刑警寧澤堤器,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布,位于F島的核電站末贾,受9級(jí)特大地震影響闸溃,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拱撵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一辉川、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧拴测,春花似錦乓旗、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至务荆,卻和暖如春妆距,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背函匕。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工娱据, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人浦箱。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓吸耿,卻偏偏與公主長(zhǎng)得像祠锣,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子咽安,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容