Ich habe ein zweispaltiges Layout. Die linke Spalte hat ein gestapeltes Menü, und wenn der Benutzer eine Option auswählt, wird der Inhalt rechts angezeigt. Was ist der beste Weg, um die active
Klasse auf dem ausgewählten Menü Link zu setzen?So stellen Sie die aktive Menüoption mit Vue ein
Ich habe unten eine Lösung gefunden, aber es scheint irgendwie ausführlich. Jeder Menüeintrag hat eine Klassenzuordnung, die von data.activeTab
abhängig ist. Ein Click-Ereignishandler aktualisiert den Wert data.activeTab
.
<template>
<div>
<div class="row">
<div class="col-md-3">
<ul class="nav nav-pills nav-stacked">
<li role="presentation" :class="{active : activeTab == 'option1'}">
<a :href="'/#/sales/' + uuid + '/option1'" @click="updateMenu">Option 1</a>
</li>
<li role="presentation" :class="{active : activeTab == 'option2'}">
<a :href="'/#/sales/' + uuid + '/option2'" @click="updateMenu">Option 2</a>
</li>
</ul>
</div>
<div class="col-md-9">
<router-view></router-view>
</div>
</div>
</div>
</template>
<script>
export default {
data : function() {
return {
activeTab : 'option1'
}
},
props : [
'uuid'
],
methods : {
updateMenu : function (event) {
var str = event.target.toString();
this.activeTab = str.substr(str.lastIndexOf('/') + 1);
}
}
}
</script>
Sie Lösung funktioniert, wenn ich nur auf den Link klicken. Aber es funktioniert nicht für die Aktualisierung im Untermenü. Ich verwende [admin-lite template] (https://adminlte.io/themes/AdminLTE/index.html#) für die linke Seitenleiste. Würden Sie mir die Lösung dafür geben? –