Звучит как идеальное использование с массивом, поскольку теперь вы переключаете только одно значение imgPath
, которое, конечно, при нажатии на одно изображение, все меняется. Итак, рассмотрим массив, который вы повторяете в шаблоне, и по щелчку измените только значение источника этого изображения:
data: () => ({
imgPath1: require('../assets/img/photo_1.png'),
imgPath2: require('../assets/img/photo_2.png'),
// iterate this in template
imgs: []
}),
methods: {
changePath(img, index) {
// toggle between the two images
let newPath = img === this.path1 ? this.path2 : this.path1;
// needed for change detection
this.$set(this.imgs, index, newPath);
}
},
mounted() {
// you want all images to initially be the first
this.imgs = Array(3).fill(this.imgPath1);
}
и шаблон:
<template v-for="(img, i) in imgs">
<img :src="img" :key="i" @click="changePath(img, i)">
</template>
SANDBOX