鍍金池/ 問答/HTML/ router-view一定要寫在app.vue中嗎?

router-view一定要寫在app.vue中嗎?

app.vue

<template>
  <div id="app">
    <div>此框內為app.vue中的內容,不會因為點擊下面的router-link而消失</div>
    <router-link v-bind:to="'/hello'">say Hello</router-link>
    <router-link v-bind:to="'/world'">say World</router-link>
    <router-view/>
  </div>
</template>

rootApp.vue

<template>
  <div id="rootApp">
    <H3>此框內為rootApp.vue中的內容,點擊下面的router-link會消失</H3>
    <router-link v-bind:to="'/hello'">say Hello</router-link>
    <router-link v-bind:to="'/world'">say World</router-link>
    <router-view/>
  </div>
</template>

hello.vue

<template>
  <div>
    <h1>hello</h1>
  </div>
</template>

world.vue

<template>
  <div>
    <h1>world</h1>
  </div>
</template>

router的index.js

import Vue from 'vue'
import Router from 'vue-router'

import rootApp from '@/components/rootApp'
import hello from '@/components/hello'
import world from '@/components/world'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      component: rootApp
    },{
      path: '/hello',
      component: hello
    },{
      path: '/world',
      component: world
    }
  ]
})

結構:
clipboard.png


其實貼了這么多代碼只是想請教大家一個問題,為什么只能在app.vue里點擊router-link后會替換router-view,然后上面的內容還不會消失。而在rootApp中也是和app.vue相差不多的結構,點擊router-link,整個頁面都會被替換。想知道解決辦法

回答
編輯回答
萌面人

app.vue是所有其他組件的父view/router,
router里的父子關系通過<router-view/>來展現(xiàn)。

2017年1月18日 21:29
編輯回答
孤島

這是因為vue-cli 在main.js里面實例化vue的時候 將template 設置為App.vue哦.

你可以改為rootApp.vue 然后不需要再定義路由!.

2017年12月28日 09:40