Использование элемента из одного объекта в списке в качестве источника img в Vue.js

#javascript #html #vue.js #v-for

Вопрос:

У меня есть список объектов, которые на данный момент содержат только идентификатор и путь:

 export let carList = [  {  id :   id,  path : "img/RedCar.png",  },  {  id :   id,  path : "img/BlueCar.png",  },  {  id :   id,  path : "img/GreenCar.png",  }, ]  

и хотел бы отображать их по одному за раз на основе индекса, который можно увеличивать с помощью кнопок. До сих пор мне удавалось распечатать их все с помощью v-for, но, похоже, я не могу найти способ распечатать только один. Это то, что у меня есть до сих пор:

 lt;templategt; lt;div id="carSelector"gt;  lt;img id="left-arrow" src="img/leftarrow.png"gt;  lt;img id="carPic" v-for="car in cars" :src="car.path" v-bind:key="car.id" /gt;  lt;img id="right-arrow" src="img/rightarrow.png"gt; lt;/divgt; lt;/templategt;  lt;scriptgt; import {carList} from './page-index.js'  export default {  name: "carSelector",  data() {  return {  cars: carList  }  },  methods: {    } } lt;/scriptgt;  

Ответ №1:

Вы можете взять переменную для поддержания текущего индекса и добавить две функции для переключения между изображениями. Я надеюсь, что это решит вашу проблему.

  lt;templategt;  lt;div id="carSelector"gt;  lt;img id="left-arrow" src="img/leftarrow.png" @click="previous"/gt;  lt;img id="carPic" :src="cars[selectedIndex].path" /gt;  lt;img id="right-arrow" src="img/rightarrow.png" @click="next" /gt;  lt;/divgt; lt;/templategt; lt;scriptgt; import { carList } from "./page-index.js"; export default {  name: "carSelector",  data() {  return {  selectedIndex: 0,  cars: carList,  };  },  methods: {  next() {  if (this.selectedIndex lt; this.cars.length) {  this.selectedIndex  ;  }  },  previous() {  if (this.selectedIndex !== 0) {  this.selectedIndex--;  }  },  }, }; lt;/scriptgt;