您的导航栏应该呈现在router-view 之外,这是设置它的方法(您可能已经做了很多这样的工作)。
首先,从提供所有路线的基础应用开始:
App.vue(基础应用)
<template>
<topnavbar />
<router-view />
</template>
<script type="text/javascript">
import topnavbar from './topnavbar.vue'
export default{
components:{
topnavbar // register component
}
}
</script>
现在您需要做的就是设置您的路由器并将基础应用程序安装到您的主 Vue 实例:
app.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from ''./components/App.vue // import the base component
Vue.use(VueRouter);
// import views you want to serve up in `router-view`
import Foo from './components/views/Foo.vue'
import Bar from './components/views/Bar.vue'
const routes = [{
path: '/foo',
component: Foo
},
{
path: '/bar',
component: Bar
},
]
const router = new VueRouter({
mode: 'history',
routes
})
new Vue({
render: h => h(App), // mount the base component
router
}).$mount('#app')
这应该设置一切。现在,为了确保导航栏不会刷新,请确保您使用 router-link 而不是锚标签:
Topnavbar.vue
<div id="topnav">
<ul>
<li><router-link to="foo">Foo</router-link></li>
<li><router-link to="bar">Bar</router-link></li>
<ul>
</div>
现在应该可以为您的应用程序中的组件提供服务,而无需在每次导航到不同页面时重新渲染 topnavbar。
这是 JSFiddle:https://jsfiddle.net/ukoebmwo/