是否可以从我的登录页面隐藏 vue-router?如果是这样,我该怎么做?在我拥有的每一页上我都看到了菜单,但在登录页面上我不想看到它。
这是我的代码:
登录
<template>
<div>
<h1>Login</h1>
<form action="">
<label>naam</label>
<input type="text">
</form>
</div>
</template>
<script>
</script>
<style scoped>
h1 {
background-color: chartreuse;
}
</style>
App.vue
<template>
<div id="app">
<div class="routing">
</div>
<router-link to="/">Login</router-link>
<router-link to="/home">Home</router-link>
<router-view v-if="$route = 'login'"></router-view>
</div>
</template>
<script>
export default {
data () {
return {
}
}
}
</script>
主.js
import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
import Login from './Login.vue'
import Home from './Home.vue'
Vue.use(VueRouter);
const routes = [
{ path: '/', component: Login},
{ path: '/home', component: Home},
];
const router = new VueRouter({
routes,
mode: 'history'
});
new Vue({
el: '#app',
router,
render: h => h(App)
});
首页.vue
<template>
<div>
<h1>Home</h1>
<hr>
<router-view></router-view>
</div>
</template>
<script>
</script>
<style scoped>
h1 {
background-color: aquamarine;
}
</style>
原文由 Lucafraser 发布,翻译遵循 CC BY-SA 4.0 许可协议
我只是遇到了同样的问题,发现了两种方法:
1. 使用嵌套路由 - http://router.vuejs.org/en/essentials/nested-routes.html
基本上你必须使用你的 App.vue 作为一种占位符,所有页面之间共享所有元素(在你的情况下我相信没有),并将
<router-view></router-view>
放在其中。对你来说,我相信这会很简单:你还必须有另一个模板来保存你的菜单:
在你的路由器中应该有这样的东西:
这样,您的登录页面将呈现在
/
和其他页面(带菜单)在/restricted/{other_page}
。使用这种方法,菜单将不会显示或呈现。2. 在您不想渲染的组件上使用
v-if
。在你
App.vue
使用v-if="this.$route.path !== '/'"
在你不想被渲染的元素上,在你的情况下,router-link
的。您可以封装它们并将v-if="this.$route.path !== '/'"
应用于封装元素(div
?)问候。