Spring Boot+Vue Element學(xué)習(xí)(二)

打開項(xiàng)目

引入

image.png

在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']">
image.png

2:default-active:默認(rèn)選中的菜單,通過菜單的 index 值來關(guān)聯(lián)。

<el-menu :default-openeds="['1', '3']" :default-active="'1-2'">
image.png
image.png

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>
image.png

如果菜單還需要下級菜單

          <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>
image.png

Vue router 來動態(tài)構(gòu)建左側(cè)菜單

導(dǎo)航1
1.??1
2.??2
導(dǎo)航2
1.??3
2.??4

在View首先創(chuàng)建頁面

image.png

image.png

然后在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>

代碼如下

image.png

image.png

如何講頁面放到我們想要放的位置丘逸?

代碼如下
image.png

image.png

菜單動態(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  
image.png
 <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屬性是字符串

image.png

如何把右側(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

image.png

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>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市侨颈,隨后出現(xiàn)的幾起案子余赢,更是在濱河造成了極大的恐慌,老刑警劉巖哈垢,帶你破解...
    沈念sama閱讀 222,104評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件妻柒,死亡現(xiàn)場離奇詭異,居然都是意外死亡耘分,警方通過查閱死者的電腦和手機(jī)举塔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評論 3 399
  • 文/潘曉璐 我一進(jìn)店門绑警,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人央渣,你說我怎么就攤上這事计盒。” “怎么了芽丹?”我有些...
    開封第一講書人閱讀 168,697評論 0 360
  • 文/不壞的土叔 我叫張陵北启,是天一觀的道長。 經(jīng)常有香客問我志衍,道長暖庄,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,836評論 1 298
  • 正文 為了忘掉前任楼肪,我火速辦了婚禮培廓,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘春叫。我一直安慰自己肩钠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評論 6 397
  • 文/花漫 我一把揭開白布暂殖。 她就那樣靜靜地躺著价匠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪呛每。 梳的紋絲不亂的頭發(fā)上踩窖,一...
    開封第一講書人閱讀 52,441評論 1 310
  • 那天,我揣著相機(jī)與錄音晨横,去河邊找鬼洋腮。 笑死,一個胖子當(dāng)著我的面吹牛手形,可吹牛的內(nèi)容都是我干的啥供。 我是一名探鬼主播,決...
    沈念sama閱讀 40,992評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼库糠,長吁一口氣:“原來是場噩夢啊……” “哼伙狐!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起瞬欧,我...
    開封第一講書人閱讀 39,899評論 0 276
  • 序言:老撾萬榮一對情侶失蹤贷屎,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后艘虎,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體豫尽,經(jīng)...
    沈念sama閱讀 46,457評論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評論 3 341
  • 正文 我和宋清朗相戀三年顷帖,在試婚紗的時候發(fā)現(xiàn)自己被綠了美旧。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,664評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡贬墩,死狀恐怖榴嗅,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情陶舞,我是刑警寧澤嗽测,帶...
    沈念sama閱讀 36,346評論 5 350
  • 正文 年R本政府宣布,位于F島的核電站肿孵,受9級特大地震影響唠粥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜停做,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評論 3 334
  • 文/蒙蒙 一晤愧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蛉腌,春花似錦官份、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,511評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至河咽,卻和暖如春钠右,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背忘蟹。 一陣腳步聲響...
    開封第一講書人閱讀 33,611評論 1 272
  • 我被黑心中介騙來泰國打工飒房, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人寒瓦。 一個月前我還...
    沈念sama閱讀 49,081評論 3 377
  • 正文 我出身青樓情屹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親杂腰。 傳聞我的和親對象是個殘疾皇子垃你,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評論 2 359