iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 24
0
自我挑戰組

Vue 學習筆記 - 讓你30天掌握 Vue系列 第 25

Day 24 : 同一路徑載入多個頁面元件

  • 分享至 

  • xImage
  •  

同一路徑載入多個頁面元件

現在我們已經能夠靠點擊連結來切換我們想要訪問的路徑,並且利用切換頁面元件的方式達到切換頁面的效果,是不是越來越有單頁式應用程式的感覺了呢!
那麼今天要介紹的是,如果我的單一路徑上要載入不只一個元件的話,
該怎麼做呢?直接來看範例:

//src/components/Menu.vue

<template>
  <div>
    <router-link to="/page">Child1</router-link>
    <router-link to="/page/child2">Child2</router-link>
    <router-link to="/page/child3">Child3</router-link>
  </div>
</template>

<script>
export default {
  name: 'Menu',
  data () {
    return {
      
    }
  }
}
</script>

首先我先將之前 Page.vue 裡的所有連結的部份,都用 Menu.vue 分離出來。

//src/App.vue

<template>
  <div id="app">
    <img src="./assets/logo.png">
    <ul>
      <li>
        <router-link :to="{name: 'HelloWorld'}">Home</router-link>
      </li>
      <li>
        <router-link to="/page">Page</router-link>
      </li>
    </ul>
    <router-view name="Menu"/> //router-view 並給 name 的屬性
    <router-view/> //切換 HelloWorld 和 Page 的頁面的
  </div>
</template>

然後,這些連結我希望只有在 page 這個頁面才要顯示出來,這裡我先加上一個新的 router-view,下面的是切換 HelloWorld 和 Page 的頁面的,而上面的可以看到我有加上 name 的屬性,並且給他 Menu 的值,這就是為了指定這個 router-view 是載入 Menu 這個元件。

//router/index.js

import Menu from '@/components/Menu'

export default new Router({
  routes: [
    {
      path: '/',
      name: 'HelloWorld',
      component: HelloWorld
    },
    {
      path: '/page',
      components: {
        default: Page,
        Menu: Menu //name 為 Menu 的 router-view 會載入 Menu 這個元件
      },
      children: [
        {
          path: '',
          name: 'Child1',
          component: Child1
        },
        {
          path: 'child2',
          name: 'Child2',
          component: Child2
        },
        {
          path: 'child3',
          name: 'Child3',
          component: Child3
        },
      ]
    },
  ]
})

當我們將上述的元件都準備好後,再來要到 index.js 去作路由的設定,改的部份並沒有很多,將原本的 component 改為 components,然後預設的元件為 Page,第二個則是剛剛設定為 name 的 router-view 要載入的元件是為 Menu,這麼一來就可以正確載入兩個頁面元件囉!

那麼,明天再見囉!


上一篇
Day 23 : 製作巢狀路由
下一篇
Day 25 : 切換路由方法
系列文
Vue 學習筆記 - 讓你30天掌握 Vue31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言