我是Vue的新手,并且我有一个带折叠的引导导航,其中包含更多导航项。 因此,基本上,这只是一个可以滑入和滑出的菜单。
我想要的内容:当一个或多个孩子具有活动类别时,我想向父项(活动类别)添加一个类别。
但是我不知道如何使用vue做到这一点。 谁能帮助我实现这一目标?
我的HTML看起来像这样:
<ul class="nav flex-column">
<li data-toggle="collapse" data-target="#users" class="nav-item collapsed">
<div class="slide-out">
<div class="nav-link">
Users
<i class="fas fa-fw fa-chevron-right float-right"></i></div>
<div id="users" class="collapse">
<ul class="nav flex-column">
<li class="nav-item"><a href="https://motorsport-manager.test/users" class="nav-link active ">
Manage
</a></li>
<li class="nav-item"><a href="https://motorsport-manager.test/user/create" class="nav-link ">
Create user
</a></li>
</ul>
</div>
</div>
<div class="slide-in float-right"><a href="https://motorsport-manager.test/users" class="nav-link"><i class="fa-fw fas fa-users"></i></a></div>
</li>
<li data-toggle="collapse" data-target="#teams" class="nav-item collapsed">
<div class="slide-out">
<div class="nav-link">
Teams
<i class="fas fa-fw fa-chevron-right float-right"></i></div>
<div id="teams" class="collapse">
<ul class="nav flex-column">
<li class="nav-item"><a href="https://motorsport-manager.test/teams" class="nav-link ">
Manage
</a></li>
<li class="nav-item"><a href="https://motorsport-manager.test/team/create" class="nav-link ">
Create team
</a></li>
</ul>
</div>
</div>
<div class="slide-in float-right"><a href="https://motorsport-manager.test/teams" class="nav-link"><i class="fa-fw fas fa-chalkboard"></i></a></div>
</li>
<li data-toggle="collapse" data-target="#team-members" class="nav-item collapsed">
<div class="slide-out">
<div class="nav-link">
Team members
<i class="fas fa-fw fa-chevron-right float-right"></i></div>
<div id="team-members" class="collapse">
<ul class="nav flex-column">
<li class="nav-item"><a href="https://motorsport-manager.test/team-members" class="nav-link ">
Manage
</a></li>
<li class="nav-item"><a href="https://motorsport-manager.test/team-member/create" class="nav-link ">
Create team member
</a></li>
</ul>
</div>
</div>
<div class="slide-in float-right"><a href="https://motorsport-manager.test/team-members" class="nav-link"><i class="fa-fw fas fa-users-cog"></i></a></div>
</li>
<li data-toggle="collapse" data-target="#race-categories" class="nav-item collapsed">
<div class="slide-out">
<div class="nav-link">
Race categories
<i class="fas fa-fw fa-chevron-right float-right"></i></div>
<div id="race-categories" class="collapse">
<ul class="nav flex-column">
<li class="nav-item"><a href="https://motorsport-manager.test/race-categories" class="nav-link ">
Manage
</a></li>
<li class="nav-item"><a href="https://motorsport-manager.test/race-category/create" class="nav-link ">
Create race category
</a></li>
</ul>
</div>
</div>
<div class="slide-in float-right"><a href="https://motorsport-manager.test/race-categories" class="nav-link"><i class="fa-fw fas fa-boxes"></i></a></div>
</li>
<li data-toggle="collapse" data-target="#race-series" class="nav-item collapsed">
<div class="slide-out">
<div class="nav-link">
Race series
<i class="fas fa-fw fa-chevron-right float-right"></i></div>
<div id="race-series" class="collapse">
<ul class="nav flex-column">
<li class="nav-item"><a href="https://motorsport-manager.test/race-series" class="nav-link ">
Manage
</a></li>
<li class="nav-item"><a href="https://motorsport-manager.test/race-series/create" class="nav-link ">
Create race series
</a></li>
</ul>
</div>
</div>
<div class="slide-in float-right"><a href="https://motorsport-manager.test/race-series" class="nav-link"><i class="fa-fw fas fa-warehouse"></i></a></div>
</li>
</ul>
答案 0 :(得分:0)
您可以保留一个具有数组的对象并对其进行遍历。
<template>
<ul class="nav flex-column">
<li v-for="(item, index) in list" :key="index" data-toggle="collapse" data-target="#users"
class="nav-item collapsed" :class="{'active': item.active}">
<div class="slide-out">
<div class="nav-link">
{{item.name}}
<i class="fas fa-fw fa-chevron-right float-right"></i></div>
<div id="users" class="collapse">
<ul class="nav flex-column">
<li v-for="(child, i) in item.children" :key="i" class="nav-item">
<a href="https://motorsport-manager.test/users" class="nav-link" :class="{'active': child.active}">
{{child.name}}
</a></li>
</ul>
</div>
</div>
<div class="slide-in float-right"><a href="https://motorsport-manager.test/users" class="nav-link"><i
class="fa-fw fas fa-users"></i></a></div>
</li>
</ul>
</template>
<script>
export default {
data() {
return {
list: [
{
name: 'Users',
active: false,
children: [
{name: 'Manage', active: true},
{name: 'Create user', active: false},
]
},
{
name: 'Teams',
active: false,
children: [
{name: 'Manage', active: false},
{name: 'Create tram', active: false},
]
}
]
}
},
mounted() {
this.handleActive()
},
methods: {
handleActive() {
this.list.forEach(v => {
v.children.forEach(child => {
if (child.active) {
v.active = true
}
})
})
}
}
}
</script>