Похоже, у вас есть <app-modal/>
компонент внутри v-for="dwarf in dwarfs"
l oop, но тогда элемент управления для отображения всех модальных компонентов, созданных этим l oop, находится только в одной переменной: showModal
. Поэтому, когда showModal
равно true
, модал покажет каждого из гномов, и я предполагаю, что модал второго гнома просто прикрывает первый.
Чтобы это исправить, вы можете переместить <app-modal />
за пределами этого v-for
l oop, так что на странице есть только один экземпляр, а затем как часть лога c, который показывает модал, заполните реквизиты модала правильной информацией дварфа.
Примерно так:
<div class="card-container">
<div class="card" v-for="dwarf in dwarfs" :key="dwarf.name">
<p>{{dwarf}}</p>
<div class="card-body">
<button
class="card-button"
@click="() => setModalDwarf(dwarf)"
>
Waffe
</button>
</div>
</div>
<!-- Move outside of v-for loop -->
<app-modal
:showModal="!!modalDwarfId"
:targetDwarf="modalDwarfId"
@close="modalDwarfId = null"
@weaponAdded="onDwarfWeaponAdd"
/>
</div>
export default {
//....
data: () => ({
modalDwarfId: null,
)},
methods: {
setModalDwarf(dwarf) {
this.modalDwarfId = drawf.id;
},
onDwarfWeaponAdd() {
//...
}
},
}
Затем вы можете получить правильные данные карлика в модале, от идентификатора, переданного в качестве пропила, или передать более детализированные данные модалу. поэтому он более «тупой», что является лучшей практикой, чтобы компонент не зависел от конкретной структуры данных c. Надеюсь, что это поможет