【发布时间】:2020-05-14 12:11:13
【问题描述】:
我在抽屉中有一个导航,它从数组中呈现标题,现在我希望能够单击并被重定向到另一个页面,但我无法解决这个问题,你能帮我弄清楚如何以正确的方式做到这一点?我正在使用 Vue。
这是我的导航栏:
<template>
<nav>
<v-app-bar prominent flat app style="background-color: white;">
<div class="wrap row">
<div class="hamburger col-lg-2">
<v-app-bar-nav-icon @click.stop="drawer = !drawer"></v-app-bar-nav-icon>
</div>
<div class="headerImg col-lg-8">
<router-link to="/">
<img class="image" :src="require('../img/eagle.jpg')" />
</router-link>
</div>
</div>
</v-app-bar>
<v-navigation-drawer v-model="drawer" app temporary class="navigation">
<div id="sidebar">
<div class="SidebarHeader text-center">
<router-link to="/">
<div class="img"></div>
</router-link>
</div>
<!-- PARENT -->
<ul class="idb-nav list-unstyled m-15 p-0">
<div v-for="(menu, index) in navigation.subnav" :key="index">
<li class="nav-item" v-if="navigation.route && navigation.route.length">
<a
:class="[ 'nav-link', { 'active': menu.active } ]"
href="javascript:void(0);"
@click="toggleMenu(index)"
>
<i
v-if="item.subnav"
class="fas"
:class="{'fa-chevron-down' :!item.open, 'fa-chevron-up' :item.open}"
></i>
<span class="menu-title">{{navigation.title}}</span>
</a>
<!-- CHILDREN -->
<ul class="list-unstyled sub-menu">
<router-link
tag="li"
v-for="(navigation, key) in navigation.subnav"
:key="key"
:to="subnav.route"
>
<a href="javascript:void(0);" class="sub-menu-nav-link">
<span>{{subnav.title}}</span>
</a>
</router-link>
</ul>
</li>
<Dropdown v-if="item.subnav" :list="item" />
</div>
</ul>
</div>
</v-navigation-drawer>
</nav>
</template>
<script>
import Dropdown from "./Dropdown";
export default {
computed: {
navigation() {
return this.$store.getters.navigation;
}
},
data() {
return {
drawer: false
};
},
components: {
Dropdown
}
};
</script>
这是我的 index.js 文件:
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex)
export default new Vuex.Store({
state: {
navigation: [
{
title: "Historia",
route: './views/Historia'
},
{
title: "Elgitarrer",
open: false,
subnav: [
{
title: "Solid guitars",
open: false,
route: './views/Solid'
},
{
title: "Semi solid guitars",
open: false,
route: './views/Semisolid'
},
{
title: "Archtop guitars",
open: false,
route: './views/Archtop'
},
{
title: "Thin archtop guitars",
open: false,
route: './views/Thinarchtop'
},
]
},
{
title: "Elbasar",
open: false,
subnav: [
{
title: "Kontrabas",
open: false,
route: './views/Kontrabas'
},
{
title: "Bas",
open: false,
route: './views/Bas'
},
]
},
{
title: "Akustiskt",
open: false,
subnav: [
{
title: "Nylonsträngade",
open: false,
route: './views/Nylon'
},
{
title: "Stålsträngade",
open: false,
route: './views/Steel'
},
{
title: "Akustisk bas",
open: false,
route: './views/Akustiskbas'
},
]
},
{
title: "Övrigt",
open: false,
subnav: [
{
title: "Banjo/Mandolin",
open: false,
route: './views/BanjoMandolin'
},
{
title: "Ukulele",
open: false,
route: './views/Ukulele'
},
]
},
{
title: "Kontakt",
open: false,
route: './views/Kontakt'
},
],
},
getters: {
navigation: state => {
return state.navigation;
}
}
})
请帮帮我!
/丽莎
【问题讨论】:
-
您似乎缺少 vue-router 路由定义?您基本上在 vuex 中定义了路由,但您需要在路由器中定义路由。但是,您可以在那里重新使用您的定义。 router.vuejs.org/guide/essentials/nested-routes.html 你用 vue-cli 设置你的项目了吗?那么你可能已经准备好文件了
-
嘿丽莎,请查看这个使用 vue 路由器的免费视频。 vueschool.io/courses/vue-router-for-everyone(约 1 小时)
-
好的,但是如何在路由器中设置路由?我是 vue 的新手,我学习了很多教程和示例,但我也认为混合所有内容让我变得更难了。哈哈。
标签: vue.js routes navigation dropdown router