Научим компонент работать с директивой
v-model
.
Добавим параметр value - индекс item'а, который надо показать:
props: {
value: Number,
...
computed: {
item() {
return this.items[this.value];
},
...
<transition name="slide-fade" mode="out-in">
<div class="content" :key="value">
<h2>{{ item.title }}</h2>
<p>{{ item.text }}</p>
</div>
</transition>
Чтобы сменить отображаемый item, будем отправлять в родительский компонент новый индекс:
methods: {
next(change) {
const len = this.items.length;
this.$emit('input', (this.value + change + len) % len);
},
...
<button @click="next(-1)">Prev</button>
<button @click="next(+1)">Next</button>
Ну а в родителе останется связать какое-то из его свойств с экземпляром компонента слайдера:
data: () => ({
active: 1,
...
<v-slider
v-model="active"
...
https://jsfiddle.net/5runc0db/