В моем проекте VueJS у меня есть механизм показа контента на основе входа в систему с использованием Firebase и состояния (vuex), если пользователь вошел в систему, содержимое показывается с использованием v-if
. Итак, в этот момент я могу поставить NavigationDrawer
в правильном месте, но не могу показать компоненты в правильном месте. Цель - показать фиксированный NavigationDrawer
слева и страницы (компоненты) справа, перейдя к ним с помощью VueRouter. В настоящее время проект работает нормально, но я не знаю, что делать для загрузки компонентов и не знаю, куда положить <router-view>
.
Текущая страница такова:
Приложение. vue
<template>
<v-app>
<v-content v-if="isLoggedIn">
<v-navigation-drawer v-if="isLoggedIn" permanent>
<v-toolbar flat>
<v-list>
<v-list-tile>
<v-list-tile-title class="title">Application</v-list-tile-title>
</v-list-tile>
</v-list>
</v-toolbar>
<v-divider></v-divider>
<v-list dense nav>
<v-list-item v-for="item in items" :key="item.title" link>
<v-list-tile>
<v-list-tile-action>
<v-icon>{{item.icon}}</v-icon>
</v-list-tile-action>
<v-list-tile-content>
<v-list-tile-title>{{item.title}}</v-list-tile-title>
</v-list-tile-content>
</v-list-tile>
</v-list-item>
</v-list>
</v-navigation-drawer>
</v-content>
<login v-else />
</v-app>
</template>
<script>
import login from "@/views/Login";
export default {
name: "App",
components: {
login
},
data() {
return {
items: [
{ title: "Dashboard", icon: "dashboard" },
{ title: "Settings", icon: "settings" }
]
};
},
computed: {
isLoggedIn() {
return this.$store.getters.user != null;
}
}
};
</script>
Маршрутизатор / индекс. js
import Login from '@/views/Login'
import Dashboard from '@/views/Dashboard'
import Settings from '@/views/Settings'
import VueRouter from 'vue-router'
import Vue from 'vue'
Vue.use(VueRouter)
const routes = [
{
path: '/',
name: 'Login',
component: Login
},
{
path: '/Settings',
name: 'Settings',
component: Settings
},
{
path: '/Dashboard',
name: 'Dashboard',
component: Dashboard
}
]
export default new VueRouter({
mode: 'history',
routes
})
Настройки. vue
<template>
<h1>Settings</h1>
</template>
<script>
export default {
name: "Settings"
};
</script>
Панель инструментов. vue
<template>
<h1>Dashboard</h1>
</template>
<script>
export default {
name: "Dashboard"
};
</script>
<style>
</style>