<template>
<li data-rel="ex-1" @click="expand">
<li data-rel="ex-2" @click="expand">
<li data-rel="ex-3" @click="expand">
<div v-show="isActive" :class="{ active: isActive }" data-rel="ex-1" @mouseleave="expand">
<div v-show="isActive" :class="{ active: isActive }" data-rel="ex-2" @mouseleave="expand">
<div v-show="isActive" :class="{ active: isActive }" data-rel="ex-3" @mouseleave="expand">
</template>
<script>
export default {
data() {
return {
isActive: false,
};
},
methods: {
expand() {
this.isActive = !this.isActive;
},
},
};
</script>
isActive
. Ну и кстати, для разворачивания табов не обязательно использовать какие-то data-
атрибуты. Ну и плюс в темплейте у тебя верстка неполная какая-то, тэги не закрыты, например.<template>
<div>
<li v-for="(item, index) in itemsVisibility"
:data-rel="`ex-${index}`"
@click="expand(index)"></li>
<div v-for="(item, index) in itemsVisibility"
v-show="itemsVisibility[index]"
:class="{ active: itemsVisibility[index] }"
:data-rel="`ex-${index}`"
@mouseleave="expand(index)"></div>
</div>
</template>
<script>
export default {
data() {
return {
itemsVisibility: [
true, // первый таб по дефолту открыт
false,
false,
],
};
},
methods: {
expand(index) {
this.itemsVisibility[index] = !this.itemsVisibility[index];
},
},
};
</script>
<ul>
<li
v-for="(n, i) in items"
:data-rel="`ex-${i + 1}`"
@click="active = i"
>item #{{ i + 1 }}</li>
</ul>
<div
v-if="active !== null"
@mouseleave="active = null"
>{{ items[active] }}</div>
data() {
return {
active: null,
items: [
'hello, world!!',
'fuck the world',
'fuck everything'
]
}
}
Связываться они должны по data-attr.